提升精神 V2 Qi 语法线程安全吗?
Are boost spirit V2 Qi grammars thread safe?
在阅读提升精神 V2 文档、这个 SO 问题和这个顶级谷歌精神文档结果时 精神经典/v1 我找不到任何关于提升精神 V2 语法和规则的线程安全性的声明。有些人声称它不再像经典一样,#define BOOST_SPIRIT_THREADSAFE
不会有任何影响,但如果 V2 在线程安全方面与经典没有区别,提及来源不是很清楚它是在谈论不同的实例还是共享实例。
所以我的主要问题是:
1. 不同的精神V2语法对象线程安全吗?
如果知道,则可选:
2. 共享精神 V2 语法对象线程安全吗?
3. 不同的精神 V2 规则对象线程安全吗?
4. 共享精神 V2 规则对象线程安全吗?
我也将其标记为精神x3,因为它在那里是相同的问题。
事实上,BOOST_SPIRIT_THREADSAFE无论如何都不适用于 Qi,它适用于经典。
有了这个,线程安全唯一取决于的是 Boost 是否构建了线程支持。五年来我发现的所有迹象都是,没有一个库明确支持没有线程支持的构建。(编译 boost 时,"线程=多"到底是做什么的?
非终端(语法和规则(是线程安全的,除非您派生自己的语法不是无状态的,并且parse
操作不是常量。
在实践中,更喜欢编写解析器,以便它们可以显式限定:
Parser const p;
book ok = parse(f, l, p);
X3 使得证明线程安全变得更加容易,因为规则通常是 const 全局静态(甚至是 constexpr(并且本质上是无状态的。
相关文章:
- 如何将元素添加到数组的线程安全函数?
- C++中的线程安全删除
- 在std::thread中,joinable()然后join()线程安全吗
- 在c++队列中使用pop和visit实现线程安全
- 以线程安全的方式调用"QQuickPaintedItem::updateImage(const QImage&image)"(no QThread)
- 全局变量 多读取器 一个写入器多线程安全?
- 共享队列的线程安全
- boost::文件系统::recursive_directory_iterator多线程安全
- 以线程安全的方式转换 C/C++ 中时区名称字符串的时区偏移量
- 线程安全运算符<<
- 如何使缓存线程安全
- C++线程安全:如果只有一个线程可以写入非原子变量,但多个线程从中读取. 会遇到问题吗?
- 提升精神 V2 Qi 语法线程安全吗?
- asio 链对象线程安全吗?
- 线程安全队列 c++
- 提供对不同类型的数据(建议、代码审查)的线程安全访问的类
- 如何以线程安全的方式更改目录?
- 线程安全的引用计数队列C++
- 析构函数和线程安全
- 适用于大型数组的无复制线程安全环形缓冲区