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