在阅读boost精神V2文档时,这个问题和这是google精神文档的最佳结果,适用于spirit经典/v1。 I未能找到任何关于boost V2语法和规则的线程安全性的声明。有些人声称它不再像经典版本那样了,#define BOOST_SPIRIT_THREADSAFE也不会有任何效果,但是如果V2在线程安全方面没有区别于经典,那么提到的源代码并不清楚它是在谈论不同的实例还是共享实例。
所以我的主要问题是:
1.不同的精神V2语法对象线程安全吗?
如果你知道:
2.共享精神V2语法对象线程安全吗?
3.区别精神V2规则对象线程安全吗?
4.共享精神V2规则对象线程安全吗?
我还标记它为精神x3,因为它是相同的问题。
发布于 2018-10-06 16:13:28
事实上,BOOST_SPIRIT_THREADSAFE根本不适用于气,它适用于经典。
在这种情况下,线程安全所依赖的唯一事情就是Boost是否具有线程支持。我在过去的五年中发现的所有迹象都表明,没有线程支持,任何库都不会显式地支持构建。(编译助推时做什么?)。
非终端(语法和规则)是线程安全的,除非您派生出自己的语法,这不是无状态的,并且parse操作不是const。
在实践中,更愿意编写解析器,这样就可以显式地限定它们:
Parser const p;
book ok = parse(f, l, p);X3使证明线程安全性变得更容易,因为规则通常是全局静态的(甚至是constexpr),并且本质上是无状态的。
https://stackoverflow.com/questions/52678809
复制相似问题