当read_json在多个线程中使用时,我们可以始终使用BOOST_SPIRIT_THREADSAFE标志而不与 boo
Can we use BOOST_SPIRIT_THREADSAFE flag always when read_json is used in multiple threads without linking with boost.thread libraries?
我们在项目中使用了boost。我们没有链接任何提升库,但我们包括像boost/property_tree/ptree.hpp这样的提升头文件。
我们从多个线程(不是 boost 线程而是 posix 线程)调用read_json,并且在 read_json() 函数中遇到崩溃。现在我们在包含头文件之前包含了BOOST_SPIRIT_THREADSAFE因为 boost json 解析器不是线程安全的,一切都工作正常。但是我们的审稿人不接受此更改,他指向以下链接
http://www.boost.org/doc/libs/1_60_0/libs/spirit/classic/doc/grammar.html
正如本页提到的"另一方面,如果语法旨在用于多线程代码,然后我们应该定义BOOST_SPIRIT_THREADSAFE在包含任何精神头文件之前。在此如果还需要链接到Boost.Threads"
但是我们真的需要与 Boost.Threads 库链接,因为我们没有使用提升线程,我的理解是内部提升线程将在 Linux 平台上使用 posix 线程。如果我错了,任何人都可以告诉我。
审阅者正在链接到"1.60.0"文档...的经典精神。
精神经典已经过时了十年或更长时间。
更重要的是,Boost Property Tree重写了它的解析器:它在1.60.0中根本不使用Spirit。某些版本就是这种情况。
请注意,在main
入口点之外使用属性树时可能会出现问题,例如:
- 提升::p roperty_tree::info_parser 在值中中断空格
相关文章:
- Boost Spirit,获取迭代器内部语义动作
- boost::spirit::karma 替代生成器,带有 boost::variant 由字符串和字符串别名组成
- boost::spirit::x3 中的通用解析器生成器
- Boost.Spirit将表达转换为AST
- 使用 Boost.Spirit 解析具有混合数据类型的 OBJ 文件?
- 如何处理Boost Spirit X3导致Visual Studio 2019 "static initialization order fiasco"?
- Boost Spirit X3:将(一些)空格解析为枚举
- Boost Spirit x3 条件(三元)运算符解析器
- 你如何从 Boost Spirit X3 词法解析器中获取字符串?
- 将 Boost.Spirit.X3 解析器拆分为多个 TU
- boost::spirit::x3 中的简单字符串解析器不起作用
- boost::spirit指针属性是用nullptr初始化的吗?
- Boost.Spirit Alternative Parser parallelization
- 如何在 boost::spirit::qi 中将某些语义操作排除在 AST 之外
- 自定义预期失败的完整错误消息(boost::spirit::x3)
- boost::spirit--试图编译大多数简单代码的编译器错误
- Boost.Spirit.Qi 语法,用于 Boost.Fusion 自适应结构中的默认值
- 使用 Boost.Spirit 解析嵌套列表
- (如何)我可以在不安装完整的提升库的情况下使用 boost::spirit X3 吗?
- n-ary布尔语法从中缀到前缀的Boost::Spirit转换?