【发布时间】:2025-12-05 06:15:01
【问题描述】:
所以,Ruby 1.9.1 现在是 declared stable。 Rails 应该可以使用它,并且慢慢地将 gem 移植到它。
它具有本地线程和全局解释器锁 (GIL)。
由于 GIL 已经到位,与 1.9.1 中的绿色线程相比,本机线程是否有任何好处?
【问题讨论】:
标签: ruby concurrency
所以,Ruby 1.9.1 现在是 declared stable。 Rails 应该可以使用它,并且慢慢地将 gem 移植到它。
它具有本地线程和全局解释器锁 (GIL)。
由于 GIL 已经到位,与 1.9.1 中的绿色线程相比,本机线程是否有任何好处?
【问题讨论】:
标签: ruby concurrency
1.9 中的线程是本机的,但它们已被“放慢”以允许一次只运行一个线程。这是因为如果线程真的并行运行,它会混淆现有代码。
优点:
缺点:
priority() 在 Solaris、Windows 和 Linux 之间是不同的。 loop {} 之类的东西在 Linux 中运行良好,其他线程有机会运行。但是,在 Solaris 线程上,线程会占用进程的时间并且您永远不会退出!【讨论】:
我认为最大的胜利是基于 C 的扩展 can release the GIL。因此,例如,MySQL 适配器可以非常干净地运行长时间运行的数据库查询,而不会阻塞所有其他 Ruby 线程。
【讨论】: