gpt4 book ai didi

windows - 为什么我的 Ruby 线程演示不使用两个内核?

转载 作者:可可西里 更新时间:2023-11-01 13:10:23 24 4
gpt4 key购买 nike

希望这张截图能解释我的问题:

a = Thread.new { loop {} }
b = Thread.new { loop {} }
a.join

Ruby threads demo CPU usage http://img7.imageshack.us/img7/9858/rubycores.png

那么为什么我的两个核心都没有达到极限?无论我使用多少线程,每次都是一样的;总 CPU 使用率似乎从未超过 52%。

>ruby -v
ruby 1.8.6 (2010-02-04 patchlevel 398) [i386-mingw32]

最佳答案

看起来您正在使用 MRI,它无法并行运行线程。目前,唯一可以并行运行线程的生产就绪 Ruby 实现是 JRuby 和 IronRuby。

请记住,如果您希望线程实际上并行运行,那么堆栈中的每一层都必须能够做到这一点。以JRuby为例:JRuby可以并行运行Ruby线程。但是,它通过将线程映射到 JVM 线程来实现线程,因此如果 JVM 无法并行运行线程(有些线程就是这种情况),那么 JRuby 可以运行Ruby 并行线程对您一点帮助也没有。反过来,许多 JVM 将 JVM 线程映射到 OS 线程。再说一次:如果操作系统不能并行运行线程,那么 JVM 就无能为力了。最后但并非最不重要的一点是:如果只有一个处理器,那么整个练习就毫无意义。

关于windows - 为什么我的 Ruby 线程演示不使用两个内核?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3427084/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com