我不时地使用 Ruby 进行黑客攻击,但我没有用它做任何大的或多线程的事情。我听说 MRI 只支持绿色线程,而 JRuby 通过 JVM 支持本机线程。然而,我偶然发现博客和讨论组上的评论说“Rails 不是线程安全的”或者 Ruby 本身不是线程安全的。例如,有人评论说 require 语句有问题。这听起来有点基本。
我见过很多不能正确处理并发的 Java 应用程序,我不时对它们做噩梦 :-) 但是,如果你真的知道自己在做什么,至少你可以用 Java 编写线程安全的应用程序(它是只是不容易)。
这一切听起来都令人震惊,有人可以详细说明一下 - 究竟是什么问题,如果是这种情况,Rails 是如何工作的?我可以编写在没有竞争条件和死锁的情况下正常工作的多线程 Ruby 代码吗?它在 JRuby 和 MRI 之间是可移植的,还是我必须破解 JVM 特定代码才能正确利用 JVM 本机线程?
编辑:
我应该问两个问题,因为人们似乎只回答 Rails 线程的东西(这本身很好)和绿色线程与原生线程。我对关于线程安全的核心 Ruby 问题的担忧并没有真正得到解决。在某些情况下,require似乎至少存在一个(未解决的?)问题。