微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

ruby-on-rails – 后台进程中分叉和线程有什么区别?

阅读它所述的spawn gem的文档:

By default,spawn will use the fork to spawn child processes. You can
configure it to do threading either by telling the spawn method when
you call it or by configuring your environment. For example,this is
how you can tell spawn to use threading on the call,

使用fork或thread之间的区别是什么,这两个决定的影响是什么,以及我如何知道使用哪个?

解决方法

线程意味着您在同一进程中的另一个线程中运行代码,而分叉意味着您分叉一个单独的进程.

一般来说,线程意味着你将使用更少的内存,因为你没有单独的应用程序实例(如果你有一个写友好的ruby副本,如ree,这个优势会减少).线程之间的通信也更容易一些.

根据您的ruby解释器,ruby可能无法有效地使用额外的核心(jruby擅长这一点,MRI更糟糕)因此产生一堆额外的线程将影响您的Web应用程序的性能,并且不会充分利用您的资源 – MRI一次只运行一个线程

Forking创建了单独的ruby实例,因此您可以更好地使用多个内核.您也不太可能对主要应用程序产生负面影响.在fork时共享打开文件描述符时需要小心谨慎,因此通常需要重新打开数据库连接,memcache连接等.

使用MRI,我会使用分叉,有了jruby,更多的情况需要用于穿线

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐