首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >跨多个线程的无访问boost ptree

跨多个线程的无访问boost ptree
EN

Stack Overflow用户
提问于 2014-02-19 12:08:14
回答 1查看 661关注 0票数 0

我想要创建一个系统,它将XML文件中的选项加载到ptree中,并跨多个线程访问这个ptree。Sofar,我有一个简单的类,每个线程都可以访问它,它包含了put(id)和get()方法。不幸的是,ptree似乎并不是threadsafe,所以程序经常崩溃。有没有办法,使ptree线程安全?还是有更好的解决方案?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-02-19 13:05:29

您可以使用描述的int 这篇博客文章的守护模板结构。

基本上,您将创建一个guardian<ptree>而不是普通的ptree。守护者是一个不透明的结构,它将一个mutex和它的数据放在一起。访问数据的唯一方法是通过guardian_lock,这将锁定mutex

代码语言:javascript
复制
guardian<ptree> xml;

//thread 1
{
  guardian_lock<ptree> lock(xml);
  lock->put("a", "b");
}

//thread 2
{
  guardian_lock<ptree> lock(xml);
  lock->put("c", "d");
}

因为您只能通过锁访问内部ptree,而锁则锁定互斥对象,因此永远不会有竞争条件。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21880032

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档