我可以将SpiderMonkey构建为库,并将其用作我的C ++应用程序中的Javascript引擎。
在文档中指出SpiderMonkey是线程安全的,但是它的意思是什么,因为Javascript / Ecmascript目前甚至没有线程模型。什么样的电话或表达被认定为"安全"这个关于SpiderMonkey的短语?它只是一个C ++代码调用从任何C ++线程到Javascript虚拟机的任何JS功能?
答案 0 :(得分:1)
对于您的C ++应用程序,它是线程安全的。您可以使用C ++代码中多个线程的库,而无需担心锁定数据结构等。
在这种情况下,它与库的作用无关(在您的情况下,执行JS代码)。重要的是库本身可以在多线程环境中使用。
来自维基百科:
保证实施时没有竞争条件 多个线程同时访问。
答案 1 :(得分:1)
库的线程安全意味着库可以在多线程环境中使用。 SpiderMonkey库可以集成到多线程C ++应用程序中。这与JavaScript语言模型无关。
但适用某些规则和限制。这些规则令人困惑,因为它们已经从一个版本的库更改为另一个版本,并且文档不是并且仍然不是很清楚它们。 文档页面通常会显示以下注释:“自......以后不推荐使用”或“进行中的草稿...”或“未找到404”。
从Gecko 12.0或SpiderMonkey 24开始,规则是:
您可以考虑构建一个 debug 版本的SpiderMonkey来测试您的集成。尝试使用标志:
--enable-root-analysis --enable-debug --disable-optimize
那些在库代码中添加断言以帮助更早地捕获线程(垃圾收集器和内存)相关的问题。