eth*_*nny 5 ruby sockets multithreading
我(重新)在ruby中编写套接字服务器以期简化它.阅读ruby套接字我跑过一个网站,说多线程ruby应用只在一台机器上使用一个核心/处理器.
问题:
The*_*per 6
CRuby有一个全局解释器锁,因此它不能并行运行线程.Jruby和其他一些实现可以做到这一点,但是CRuby永远不会并行运行任何类型的代码.这意味着,无论您的操作系统多么智能,它都无法共享负载.
这与C++中的线程不同.pthreads创建真实的OS线程,而核心的调度程序将同时在多个核心上运行它们.从技术上讲,Ruby也使用pthread,但GIL阻止它们并行运行.
Fork创建了一个新进程,您的操作系统的调度程序几乎肯定足够聪明,可以在一个单独的核心上运行它.如果你需要Ruby中的并行性,要么使用没有GIL的实现,要么使用fork.
归档时间:
11 年 前
查看次数:
3523 次
最近记录: