boost spirit V2 Qi 语法线程安全吗?
Are boost spirit V2 Qi grammars thread safe?
在阅读 boost spirit V2 文档时, and this top google spirit doc result for spirit classic/v1 我找不到任何关于 boost spirit V2 语法和规则的线程安全声明。有些人声称它不再像经典的那样,#define BOOST_SPIRIT_THREADSAFE
不会有任何影响,但如果 V2 在线程安全方面与经典没有什么不同,提到来源不是很清楚是否它在谈论不同的实例或共享实例。
所以我的主要问题是:
1. distinct spirit V2语法对象线程安全吗?
如果知道的话可以选择:
2。共享精神 V2 语法对象线程安全吗?
3。 distinct spirit V2 规则对象线程安全吗?
4. shared spirit V2规则对象线程安全吗?
我也将它标记为 spirit x3,因为那里是同一个问题。
确实BOOST_SPIRIT_THREADSAFE不适用于Qi,它适用于Classic。
除此之外,线程安全唯一依赖的是 Boost 是否支持线程。五年来我发现的所有迹象表明,没有库明确支持没有线程支持的构建。 (What exactly does `threading=multi` do when compiling boost?).
非终结符(语法和规则)是线程安全的,除非您派生出自己的非无状态语法并且 parse
操作不是 const。
在实践中,更愿意编写您的解析器,以便它们可以显式地被 const 限定:
Parser const p;
book ok = parse(f, l, p);
X3 更容易证明线程安全,因为规则通常是 const 全局静态(甚至是 constexpr)并且本质上是无状态的。
在阅读 boost spirit V2 文档时,#define BOOST_SPIRIT_THREADSAFE
不会有任何影响,但如果 V2 在线程安全方面与经典没有什么不同,提到来源不是很清楚是否它在谈论不同的实例或共享实例。
所以我的主要问题是:
1. distinct spirit V2语法对象线程安全吗?
如果知道的话可以选择:
2。共享精神 V2 语法对象线程安全吗?
3。 distinct spirit V2 规则对象线程安全吗?
4. shared spirit V2规则对象线程安全吗?
我也将它标记为 spirit x3,因为那里是同一个问题。
确实BOOST_SPIRIT_THREADSAFE不适用于Qi,它适用于Classic。
除此之外,线程安全唯一依赖的是 Boost 是否支持线程。五年来我发现的所有迹象表明,没有库明确支持没有线程支持的构建。 (What exactly does `threading=multi` do when compiling boost?).
非终结符(语法和规则)是线程安全的,除非您派生出自己的非无状态语法并且 parse
操作不是 const。
在实践中,更愿意编写您的解析器,以便它们可以显式地被 const 限定:
Parser const p;
book ok = parse(f, l, p);
X3 更容易证明线程安全,因为规则通常是 const 全局静态(甚至是 constexpr)并且本质上是无状态的。