is boost::property_tree::ptree thread safe?

引入boost::property_tree::ptree解析json时,在多线程情况下经常crash。 最后在stackoverflow中找到答案。

在ptree下层使用的spirit库默认不是线程安全的。 需要加一个

#define BOOST_SPIRIT_THREADSAFE

此宏定义需要写在#include <boost/property_tree/ptree.hpp>之前。

在stackoverflow上相关的问题描述链接:

http://stackoverflow.com/questions/14140243/concurrency-problems-wih-boost-property-tree

http://stackoverflow.com/questions/8156948/is-boostproperty-treeptree-thread-safe

时间: 2024-08-03 11:01:28

is boost::property_tree::ptree thread safe?的相关文章

boost.property_tree

//made by davidsu33 //boost.property_tree是一个保存了多个属性值的树形数据结构 //boost.property_tree可以解析xml ini json和info四种格式的文本 #include <boost/property_tree/ptree.hpp> #include <boost/property_tree/xml_parser.hpp> #include <boost/typeof/typeof.hpp> #incl

Boost property_tree解析json

使用Boost property_tree解析json 之前使用jsoncpp解析json,现在才知道boost就有解析的库,学习一下吧 property_tree可以解析xml,json,ini,info等格式的数据,用property_tree解析这几种格式使用方法很相似. 解析json很简单,命名空间为boost::property_tree,reson_json函数将文件流.字符串解析到ptree,write_json将ptree输出为字符串或文件流.其余的都是对ptree的操作. 解析

C++ 中使用boost::property_tree读取解析ini文件

boost 官网 http://www.boost.org/ 下载页面 http://sourceforge.net/projects/boost/files/boost/1.53.0/ 我下载的是 boost_1_53_0.tar.gz 使用系统  ubuntu 12.10 一.解压 [plain] view plaincopy tar -zxvf  boost_1_53_0.tar.gz 得到一个文件夹 boost_1_53_0,  拷贝其子目录 boost 到以下路径 [plain] vi

boost::property_tree读取解析ini文件--推荐

boost::property_tree读取解析ini文件 [cpp] view plaincopy #include "stdafx.h" #include <iostream> #include <boost/property_tree/ptree.hpp> #include <boost/property_tree/ini_parser.hpp> int main() { boost::property_tree::ptree pt; boos

使用boost::property_tree生成带attribute的xml

以前写过一篇"使用Boost property tree来解析带attribute的xml", 可是还有姐妹篇一直没贴.看看前一篇贴了都快都快3年了,时间过的真快. 这一小篇就算是下篇吧,即用boost::property_tree生成带attribute的xml. 直接看demo code: #include <iostream> #include <sstream> #include <boost/property_tree/xml_parser.hp

boost.property_tree解析xml的帮助类以及中文解析问题的解决(转)

boost.property_tree可以用来解析xml和json文件,我主要用它来解析xml文件,它内部封装了号称最快的xml解析器rapid_xml,其解析效率还是很好的.但是在使用过程中却发现各种不好用,归纳一下不好用的地方有这些:获取不存在的节点时就抛出异常 获取属性值时,要排除属性和注释节点,如果没注意这一点就会抛出异常,让人摸不着头脑. 内存模型有点怪. 默认不支持中文的解析.解析中文会乱码. ptree获取子节点 获取子节点接口原型为get_child(node_path),这个n

boost::property_tree读取解析.xml文件

1)read_xml 支持中文路径  boost::property_tree::wptree wpt;    std::locale::global(std::locale(""));    boost::property_tree::xml_parser::read_xml("E:\\测试\\test.xml",wpt); 2)get  ptree pt;    read_xml("D://test1.xml",pt); //读入一个xml文

boost.property_tree读取中文乱码问题正确的解决方式

开发项目的时候在使用boost,在宽字符下遇到中文乱码问题 上网上看大家都是先转成utf8在进行解析的,例如: http://blog.csdn.net/hu_jiangan/article/details/49945373 中 void Init(const wstring& fileName, wptree& ptree) { std::wifstream f(fileName); std::locale utf8Locale(std::locale(), new std::codec

PHP5.3中关于VC9和VC6以及Thread Safe和Non Thread Safe版本选择的问题

转自:http://www.htmer.com/article/716.htm 最近在PHP官网上看到又有新版的PHP下载了,于是上去找找For Windows的版本,可是一看确傻眼了,一共给了四个版本,VC9 x86 Non Thread Safe.VC9 x86 Thread Safe.VC6 x86 Non Thread Safe.VC6 x86 Thread Safe,这让我这个菜鸟头疼啊,还好PHP官网提供下载的地方左边有个英文choose我看懂了,我估摸着就是如何来选择版本的意思吧,