mst*_*rom 3 ruby parallel-processing ruby-on-rails
当使用多进程应用程序服务器并Thread.new在控制器操作中运行(产生多个线程)时,是否实现了并行性?或者 GIL 是否会阻止这种情况发生?
Thread.new
tad*_*man 7
全局解释器锁 (GIL) 可防止在任何给定时间运行多个 Ruby 线程,这具有将 Ruby 限制为仅一个内核的实际效果。除此之外,它们是实际的线程。
如果你需要真正的并发,你需要运行一个没有 GIL 的 Ruby,比如 JRuby。
话虽如此,Ruby 中的线程适用于许多不固定 CPU 内核的操作。如果您是,您可能应该通过ActiveJob为这些操作创建后台作业。如有必要,它们可以在不同系统上的一个或多个进程中运行。
归档时间:
6 年,8 月 前
查看次数:
2958 次
最近记录: