我编写了一个小的python应用程序,在这里您可以看到任务管理器在典型运行期间的外观. http://weinzierl.name/temp/multicore-hires.png
虽然应用程序是完全多线程的,但毫不奇怪它只使用一个CPU核心.尽管大多数现代脚本语言都支持多线程,但脚本只能在一个CPU内核上运行.
Ruby,Python,Lua,PHP都只能在单核上运行.即使Erlang,据说对并发编程特别有用,也会受到影响.
是否有一种脚本语言内置支持不限于单个内核的线程?
包起来
答案是并不完全符合我的预期,但在TCL
回答接近.我想补充一下perl
,(很像TCL
)有基于解释器的线程.
Jython,IronPython和Groovy属于将经过验证的语言与另一种语言的成熟虚拟机相结合的保护伞.感谢您对此方向的提示.
我选择Aiden Bell的答案为Accepted Answer.他并没有提出一种特定的语言,但他的评论对我来说最具洞察力.
你似乎使用了"脚本语言"的定义,这可能引起一些人的注意,我不知道这对你的其他要求意味着什么.
无论如何,你考虑过TCL吗?我相信,它会做你想要的.
由于您在列表中包含了相当通用的语言,因此我不知道您可以接受多么繁重的实现.如果其中一个广泛的Scheme实现不是本机线程,我会感到惊讶,但是我只记得曾经使用的MzScheme,但我似乎记得支持被删除了.当然,一些常见的LISP实现做得很好.如果Embeddable Common Lisp(ECL)有,它可能对你有用.我不使用它,所以我不确定它的线程支持状态是什么,这当然可能取决于平台.
更新 另外,如果我没记错的话,GHC Haskell并没有完全按照你的要求做,但可能会有效地做你想要的事情,因为我记得,它会旋转一个原生线程每个核心左右然后运行它那些线程......