我只是在阅读ROR (还没有深入研究),我听说它不是线程安全的。显然,这并不意味着一个以上的人不能同时访问您的站点,那么这到底是什么意思呢?线程在ROR中的作用是什么?它们仅仅是指请求处理吗?
发布于 2009-02-03 03:21:35
您的信息已过期。从2.2.2开始,它是线程安全的
请记住Ruby MRI 1.8.x,最广泛使用的Ruby实现使用Green Threads,因此在1.8.x中,如果您创建100个线程,它们都在同一个CPU上运行。因此,当使用MRI托管Rails网站时,您可能希望运行与CPUS数量一样多的Ruby实例。像passenger这样的东西会帮你解决这个问题。
这曾经是JRuby的一个大问题,因为JRuby有原生线程,处理进程似乎是多余的。不管怎么说,现在已经解决了。
另外,Iron Ruby,.Net Ruby解释器运行本机线程。
注意: Ruby 1.9.1使用本地线程,但是仍然有一个全局解释器锁。
发布于 2009-02-03 03:19:05
基本上,它的意思是,您不能在同一进程中的不同线程下运行rails的多个副本,因为一些资源可能会在线程之间无意地泄漏,从而导致奇怪的行为,例如对象似乎在随机时间更改/消失。
此外,也可能出现这样的情况:类的设计中没有内置任何同步,这使得将rails的某些部分放入线程以及让其他部分在线程之间共享变得困难。
发布于 2009-07-29 13:10:44
值得一提的是,Ruby MRI 1.8.x使用绿色线程,但Ruby MRI 2将具有本机线程。
https://stackoverflow.com/questions/505900
复制相似问题