在Ruby实现中,Ruby1.8采用的是Green thread,JRuby和XRuby采用的是Native thread,Rubinius既支持Green thread,也支持Native thread。Ruby1.9将由Green thread转向Native thread。Green thread有哪些不足呢?
在“
Ruby Userspace Threads vs GUI tookits Roundup”中重点强调了Green Thread的一个不足:Blocking syscall将阻塞所有其余的线程,而且这个问题在GUI和网络开发中将随处碰到。另外,Green Thread不能有效挖掘多核和多CPU的性能。于是大家都把视线转向Native thread。我对Native thread不感冒,主要是因为shared state concurrency问题多多。具体有哪些,相信你看完“
The problem with threads”就会很清楚了。
现在,Erlang很好的解决了Green Thread存在的问题。它没有采用m:1模式,而是采用了m:n模式。Erlang runtime以n个native thread运行,每个都有一个自己的调度器。而且,Erlang采用shared nothing concurrency,可以把Native Thread存在的问题都抛之脑后。
看来XRuby的thread实现可以好好借鉴一下Erlang的并发范式。在看了“
The Futures of Ruby Threading”之后,更坚定了应该朝这方面努力。
分享到:
相关推荐
Green
GREEN
Getting Started with Green Hills Tools based on V850ES/FJ2
易语言模块Green.rar 易语言模块Green.rar 易语言模块Green.rar 易语言模块Green.rar 易语言模块Green.rar 易语言模块Green.rar
g线程 一个在用户空间(非内核模式)中运行的(绿色)线程库,使用信号中断在上下文之间进行交换。 使用POSIX的ucontext库在上下文之间交换。...包括green.h 就像使用pthreads一样使用该库! 编译时链接到gthread.lib
Green Hills Tutorial使用方法培训PPT
绿色浏览器 GREEN绿色浏览器 GREEN
一步一步教会你Green Hills操作系统的安装。非常实用。
本手册是GreenHills2017.7.14 版编译器的软件使用手册。
Green代理软件
Discuz! Green模板
Bo-Blog GREEN LIVES
Greenbook 7 Greenbook 7 DLMS/COSEM
The GREEN-NET Framework: Energy Efficiency in Large Scale Distributed Systems
绿色应用 使用NativeScript-Vue构建的本机应用程序先决条件节点> = 12导游在查看以下内容之前,请先遵循:用法npm install # Install dependenciesnpm start # Build for devnpm run build # Build for ...
react-native-lean-green
Dyadic Green Functions in Electromagnetic Thero
Green Hills MPC5744P Qorivva MCUs入门指南.超级详细的green hills的使用资料
VB6.0_GreenVB6.0_GreenVB6.0_GreenVB6.0_Green