ruby GIL对它启动的过程有影响吗?

时间:2017-12-02 13:37:35

标签: ruby gil multiple-processes

我注意到当我使用cruby通过Open3.capture3('java -jar multi-threaded.jar')运行多线程java程序时,大多数java线程都处于空闲状态,CPU只忙于单个核心。但是,如果我从bash运行相同的javaprogram,则CPU的利用率接近100%。

cruby GIL对capture3运行的程序有影响吗?

1 个答案:

答案 0 :(得分:1)

没有。首先,YARV Giant VM Lock(GVL)仅防止多个 Ruby 线程同时进入字节码解释器。在YARV中,Open3::capture3是用C语言编写的,而不是Ruby语言,因此GVL甚至不适用。

其次,Java进程不是一个线程,它是一个完全独立的进程。它并不关心YARV的线程实现是什么,因为它是一个进程,而不是一个线程。