一直喜欢用boost,但是 ptree 解析(boost::property_tree::json_parser::read_json)在多线程下确实很容易崩溃。其实只需要添加一个宏,一直记不住,现在收藏一下。
原因:ptree解析使用的是语法解析器spirit库,默认非线程安全。
如果在多线程下使用,如下即可:(在#include 之前定义语法解析库线程安全宏)
#define BOOST_SPIRIT_THREADSAFE
#include <boost/spirit.hpp>
ptree同理:
#define BOOST_SPIRIT_THREADSAFE
#include <boost/property_tree/json_parser.hpp>