我想知道python/ruby中的多线程是否等同于java中的多线程?
我的意思是,它有效率吗?
因为如果你想创建一个使用comet技术的聊天应用程序,我知道你必须使用多线程。
这是不是意味着我可以使用python或ruby,还是使用java更好?
谢谢
发布于 2010-06-03 20:35:16
这不是关于Ruby、Python或Java的问题,而是更多关于Ruby、Python或Java的具体实现的问题。有一些Java实现具有极其高效的线程实现,也有一些Java实现具有极其糟糕的线程实现。Ruby和Python也是如此,基本上任何语言都是如此。
即使像Erlang这样的语言,低效的线程实现甚至没有意义,有时也会有糟糕的线程实现。
例如,如果您使用JRuby或Jython,那么您的Ruby线程和Python线程就是Java线程。因此,它们不仅与Java线程一样高效,而且与Java线程完全相同。
发布于 2010-06-03 16:12:24
Ruby和Python都使用全局解释器锁。这里详细讨论了这个问题:Does ruby have real multithreading?
发布于 2010-06-03 22:25:57
philosodad指出GIL带来的约束是正确的。我不会为Ruby说话,但我确信,当您提到Python时,您实际上是指规范的cPython实现,这是可以肯定的。
在cPython的情况下,如果你想并行化在Python语言中实现的计算密集型操作,GIL是最重要的(就像在可以发布GIL的C扩展中一样)。
但是,当您编写非密集型I/O密集型应用程序(如聊天程序)时,线程实现的效率实际上就是并不是那么重要的。
https://stackoverflow.com/questions/2963615
复制相似问题