我可以将SpiderMonkey构建为一个库,并在我的C++应用程序中使用它作为Javascript引擎。
在文档中指定SpiderMonkey是线程安全,但这意味着什么,因为Javascript/Ecmascript目前甚至没有线程模型。关于SpiderMonkey这个短语,什么样的调用或表达式被限定为“安全”?它只是一段C++代码,调用从任何C++线程到Javascript虚拟机的任何JS功能?
发布于 2014-11-24 07:31:13
库的线程安全意味着库可以在多线程环境中使用。SpiderMonkey库可以集成到多线程C++应用程序中。与JavaScript语言模型无关。
,但是某些规则和限制适用于。这些规则令人困惑,因为它们一直在从库的一个版本更改到另一个版本,而文档过去和现在仍然不太清楚它们。文档页经常显示这样的注释:“自.”或“草案正在进行中.”或“未找到404”。
从壁虎12.0或SpiderMonkey 24开始,规则如下:
您可以考虑构建调试版本的SpiderMonkey来测试集成。尝试使用标志:
--enable-root-analysis --enable-debug --disable-optimize它们在库代码中添加断言,以帮助捕获线程(垃圾收集器和内存)相关的问题。
发布于 2014-11-15 02:53:31
对于您的C++应用程序,这是线程安全。您可以从C++代码中的多个线程使用库,而无需考虑锁定数据结构等。
在这种情况下,库所做的与此无关(在您的示例中,执行JS代码)。重要的是库本身可以在多线程环境中使用。
维基百科:
当多个线程同时访问时,保证实现不受竞争条件的影响。
在维基百科中阅读更多关于线程安全的信息。
https://stackoverflow.com/questions/26941923
复制相似问题