我注意到,当我使用cruby通过Open3.capture3('java -jar multi-threaded.jar')运行多线程java程序时,大多数java线程都是空闲的,而CPU只在单个内核上忙碌。但是,如果我从bash运行相同的javaprogram,CPU的利用率接近100%。
cruby GIL对capture3运行的程序有影响吗?
发布于 2017-12-02 16:11:55
不是的。首先,(GVL)只允许多个Ruby线程同时进入字节码解释器。在YARV中,Open3::capture3是用C编写的,而不是Ruby编写的,因此GVL甚至不适用。
其次,Java进程不是一个线程,它是一个完全独立的进程。它根本不在乎YARV的线程实现是做什么的,因为它是一个进程,而不是线程。
https://stackoverflow.com/questions/47608473
复制相似问题