rt
这要看怎么写程序,如果都不处理,又触到 GIL 的情况,肯定比多进程慢。但是你既然知道 GIL 的存在,可以想办法尽可能降低它的影响的。
而 Rubinius,JRuby 则没有 GIL,支持多核(每个线程分配一个 cpu)。
支持多核不一定是每个 thread 一个 CPU 吧。。。还是我对 Rubinius 理解有误?
建议看看 这篇文章 ,作者做了两个例子讲解多进程和多线程的区别。注意例子里面用 fib 代替 sleep 让 CPU 持续工作。
简单地说,Ruby MRI 因为有 GIL 的限制,导致运行 CPU 密集型任务时没有办法发挥 thread 的优势。但如果是 IO 密集型任务或者调用外部服务的任务,GIL 对 thread 的影响就没那么大。process 不会受 GIL 的影响,但更耗内存。