加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

Ruby – 如何跨核心/处理器进行线程化

发布时间:2020-12-17 03:41:31 所属栏目:百科 来源:网络整理
导读:我(重新)在 ruby中编写套接字服务器以期简化它.阅读关于ruby套接字我在 site上跑过,说多线程ruby应用只在一台机器上使用一个核心/处理器. 问题: 这准确吗? 我在乎吗?此服务器中的每个线程可能会运行几分钟,并且会有很多线程.操作系统(CentOS 6.5)是否足够
我(重新)在 ruby中编写套接字服务器以期简化它.阅读关于ruby套接字我在 site上跑过,说多线程ruby应用只在一台机器上使用一个核心/处理器.

问题:

>这准确吗?
>我在乎吗?此服务器中的每个线程可能会运行几分钟,并且会有很多线程.操作系统(CentOS 6.5)是否足够智能以共享负载?
>这与C中的线程有什么不同? (当前套接字服务器的语言)IE做pthreads自动使用多个核心?
>如果我分叉而不是线程怎么办?

解决方法

CRuby有一个 global interpreter lock,所以它不能并行运行线程. Jruby和其他一些实现可以做到这一点,但是CRuby永远不会并行运行任何类型的代码.这意味着,无论您的操作系统多么智能,它都无法共享负载.

这与C中的线程不同. pthreads创建真实的OS线程,而核心的调度程序将同时在多个核心上运行它们.从技术上讲,Ruby也使用pthread,但GIL阻止它们并行运行.

Fork创建了一个新进程,您的操作系统的调度程序几乎肯定足够聪明,可以在一个单独的核心上运行它.如果你需要Ruby中的并行性,要么使用没有GIL的实现,要么使用fork.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读