项目中用多线程解析json数据,其中用到了boost 的json parser,但是近来发现问题会导致程序出core,最终定位原因是 boost json parser中用到ptree底层依赖boost::spirit,是线程不安全的,从而导致程序出core。解决方案:
在任何引入头文件的地方加上如下宏
#define BOOST_SPIRIT_THREADSAFE
#include <boost/property_tree/ptree.hpp>
#include<boost/property_tree/json_parser.hpp>
由于项目中除了使用boost外还用了jsoncpp 的son reader来解析数据,经过调研,该库也是不安全的,在使用中也需要注意。如果发现有解决方案再来更新。