当我意识到我错过了一个重要的地方:并发性时,我终于选择v8作为我的应用程序的脚本引擎。
由于几个关键因素,我决定使用v8而不是lua,但显然我不能用v8编写线程安全代码或多线程任务。
在官方文档中,我发现没有提到v8的并发特性,它们描述了GC,v8是用C++编写的,它支持很多平台,等等,但是在wiki和用于在C++应用程序中嵌入v8的官方文档上都没有线程。
问:我应该如何看待v8?我必须从C++中将我的应用程序公开为一组单线程/线程安全函数?
发布于 2013-12-20 02:26:31
V8并不是线程安全的,但这并不意味着您不能在线程环境中使用它。这样做的唯一规定是使用V8的Locker对象,无论何时您访问任何与V8相关的内容。
这样做非常简单,只需创建一个v8::Locker的新实例,然后当您完成在V8中所做的任何操作时,创建一个v8::Unlocker实例
在我使用V8的documentation...it时,我的经验非常糟糕,而且(无论如何,在我的使用中)学习如何使用它的最好方法是尝试和错误。
编辑:This的答案在这里解释了多线程使用V8比我更好:
https://stackoverflow.com/questions/20695124
复制相似问题