ruby-on-rails – 后台进程中分叉和线程有什么区别?
阅读它所述的spawn gem的文档:
使用fork或thread之间的区别是什么,这两个决定的影响是什么,以及我如何知道使用哪个? 解决方法
线程意味着您在同一进程中的另一个线程中运行代码,而分叉意味着您分叉一个单独的进程.
一般来说,线程意味着你将使用更少的内存,因为你没有单独的应用程序实例(如果你有一个写友好的ruby副本,如ree,这个优势会减少).线程之间的通信也更容易一些. 根据您的ruby解释器,ruby可能无法有效地使用额外的核心(jruby擅长这一点,MRI更糟糕)因此产生一堆额外的线程将影响您的Web应用程序的性能,并且不会充分利用您的资源 – MRI一次只运行一个线程 Forking创建了单独的ruby实例,因此您可以更好地使用多个内核.您也不太可能对主要应用程序产生负面影响.在fork时共享打开文件描述符时需要小心谨慎,因此通常需要重新打开数据库连接,memcache连接等. 使用MRI,我会使用分叉,有了jruby,更多的情况需要用于穿线 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |