0

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

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

4

1 回答 1

1

不会。首先,YARV 巨型虚拟机锁 (GVL) 只能防止多个Ruby线程同时进入字节码解释器。在 YARV 中,Open3::capture3是用 C 而不是 Ruby 编写的,因此 GVL 甚至不适用。

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

于 2017-12-02T16:11:55.630 回答