哪种脚本语言更适合嵌入多线程C/C++应用程序

Joh*_*ohn 18 javascript ruby python windows lua

考虑以下要求:

  • 必须在Windows上受支持.最好也适用于其他平台.
  • 必须支持多线程.我的意思是引擎可以在多个线程中并行工作.
  • 可读性很重要.
  • 许可证必须与闭源项目兼容.

我喜欢Python的可读性.我对Python的经验也比其他脚本语言更多.但是CPython不是多线程的,IronPython需要托管CLR和兼容的语言(C++/CLI或C#).

Pau*_*xon 29

Lua可能值得一试.它可以以线程安全的方式使用,并且语言支持可能符合您要求的"协同例程"概念.

  • 看看Lua Lanes:http://luaforge.net/projects/lanes/用于多核线程. (2认同)

小智 12

Lua是最好的选择.Python,Ruby和JavaScript都是大语言,它们不是为嵌入而设计的.但Lua与众不同,旨在嵌入.

对于脚本语言,您应该比其他任何事情更多地考虑"限制".嵌入脚本可以轻松地用于黑客(坏意思).

例如,默认情况下Lua无法打印到控制台.据我所知,暴雪因此使用了Lua.

  • 我同意Lua是一个不错的选择,但Python和JavaScript*都被设计为嵌入式.Python的设计也可以单独使用,但它始终可以通过设计进行嵌入.JavaScript从第1天开始嵌入(在Web浏览器中); 独立JavaScript是一项相对较新的发明. (4认同)

Uri*_*hen 11

我选择Lua而不是Python和JScript一直处于同样的两难境地.Lua最擅长的是使用像luabridge和luabind这样的库的C/C++代码.也就是说,你可以从C++调用lua并让脚本回调到C++而不会出现问题,从脚本中访问c ++数据,反之亦然.

像Python和Lua这样的语言的问题在于,语言在常规意义上并不是真正的多线程:如果一个C++线程使用语言脚本引擎来运行脚本,则不能使用相同的引擎来运行另一个脚本.两种语言都有一个引擎范围的锁,可以在这些情况下使用,以确保维持引擎的完整性.但是,这两种语言都是多线程的,因为您可以在后台运行函数并与您想要的任何同步对象进行交互(就像从C++中那样).所以我选择从C++和脚本代码创建的所有线程只在专用线程(每个引擎的线程)中运行,并以常规方式与应用程序中的其他线程交互.

如果你需要将数据和控制从C++传递到脚本,反之亦然,Lua比Python要好得多.除此之外,我不会在C++项目中托管CLR.太乱了.


Phr*_*ogz 9

您可以考虑嵌入一个流行的JavaScript引擎.它们不仅速度快,而且支持得很好,但是很多人都知道如何使用JavaScript进行编程,它将被大量读者轻松采用和阅读.

根据这个答案,SpiderMonkey引擎是线程安全的,而谷歌/ Chrome的V8可能不是.