哪种脚本语言支持多核编程?

Lud*_*erl 11 multithreading multicore multiprocessing green-threads

我编写了一个小的python应用程序,在这里您可以看到任务管理器在典型运行期间的外观. http://weinzierl.name/temp/multicore-hires.png

虽然应用程序是完全多线程的,但毫不奇怪它只使用一个CPU核心.尽管大多数现代脚本语言都支持多线程,但脚本只能在一个CPU内核上运行.

Ruby,Python,Lua,PHP都只能在单核上运行.即使Erlang,据说对并发编程特别有用,也会受到影响.

是否有一种脚本语言内置支持不限于单个内核的线程?

包起来

答案是并不完全符合我的预期,但TCL回答接近.我想补充一下perl,(很像TCL)有基于解释器的线程.

Jython,IronPythonGroovy属于将经过验证的语言与另一种语言的成熟虚拟机相结合的保护伞.感谢您对此方向的提示.

我选择Aiden Bell的答案为Accepted Answer.他并没有提出一种特定的语言,但他的评论对我来说最具洞察力.

sim*_*mon 5

你似乎使用了"脚本语言"的定义,这可能引起一些人的注意,我不知道这对你的其他要求意味着什么.

无论如何,你考虑过TCL吗?我相信,它会做你想要的.

由于您在列表中包含了相当通用的语言,因此我不知道您可以接受多么繁重的实现.如果其中一个广泛的Scheme实现不是本机线程,我会感到惊讶,但是我只记得曾经使用的MzScheme,但我似乎记得支持被删除了.当然,一些常见的LISP实现做得很好.如果Embeddable Common Lisp(ECL)有,它可能对你有用.我不使用它,所以我不确定它的线程支持状态是什么,这当然可能取决于平台.

更新 另外,如果我没记错的话,GHC Haskell并没有完全按照你的要求做,但可能会有效地做你想要的事情,因为我记得,它会旋转一个原生线程每个核心左右然后运行它那些线程......


Aid*_*ell 3

线程语法可能是静态的,但跨操作系统和虚拟机的实现可能会改变

您的脚本语言可能在一个操作系统上使用真正的线程,而在另一操作系统上使用假线程。

如果您有性能要求,可能值得考虑确保脚本化线程落入操作系统中最有利的层。用户空间线程会更快,但对于主要阻塞的线程活动,内核线程会更好。