ruby - JRuby 多核处理用法

标签 ruby multithreading asynchronous multiprocessing jruby

是否可以在多核上运行代码块?对于循环和类似的例子?如果没有太多开销就可以,为什么不一直使用它呢?我能以某种方式跨多个内核传递变量吗?

最佳答案

是的,可以在多个内核上执行代码/ block ,但不是那么简单,例如支持结构必须为此做好准备(ArrayHash 等核心结构都不是线程安全的)。

你不能简单地 (1..100).each { |i| puts i } 运行多线程,而不会出现与单线程情况下不同(不可预测)的结果。

如果要在线程之间共享,则需要同步访问或使用线程安全结构的情况或变量。

也许在你的情况下我不会从一个绿色领域开始,这些概念和并发编程的一些后台实践可以使用 concurrent-ruby 获得 gem 。

并行运行 block 了解executors/thread-pools

还有 thread-safe structures如果您对线程之间“安全”共享变量感兴趣(CR 试图引入一种内存模型,因为 Ruby 缺少官方模型 - JRuby 有一些保证,例如类变量是易变的 - 跨线程可见的变化)

关于ruby - JRuby 多核处理用法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41939295/

相关文章:

javascript - NodeJS 中的异步函数返回未定义

ruby - 特定类别的 IRB 输出静音

ruby-on-rails - Devise + Facebook omniauth:无法为 Devise::OmniauthCallbacksController 找到操作 'facebook'

c - 多线程正在以选项卡形式写入输出

c++ - QThread - 使用 moveToThread 将类成员移动到线程

.net - 向 Windows GUI 线程发送消息

ruby-on-rails - 记录当前用户 ruby​​ on rails 4.0

Ruby Sinatra 创建发布请求

java - 使用同步块(synchronized block)的锁

c - 在 Linux 上用 C 调用异步、定时函数?