当read_json在多个线程中使用而不与boost.thread库链接时,我们是否可以使用BOOST_SPIRIT_THREADSAFE标志?

时间:2016-03-14 21:35:41

标签: c++ multithreading boost

我们正在项目中使用boost。我们没有链接任何boost库,但我们包括boost / property_tree / ptree.hpp等提升头文件。

我们从多个线程调用read_json(不是boost线程但是posix线程),我们在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库链接,因为我们没有使用boost线程,而我的理解是内部的boost线程将在Linux平台上使用posix线程。如果我错了,任何人都可以告诉我。

1 个答案:

答案 0 :(得分:3)

审稿人正在链接到" 1.60.0"文档... 经典 精神。

精神经典已经过时十年或更久了。

更重要的是,Boost Property Tree重写了它的解析器:在1.60.0中没有使用Spirit 。某些版本就是这种情况。

注意在main入口点之外使用属性树时可能会出现问题,请参阅例如: