gpt4 book ai didi

c++ - 跨多个线程访问boost ptree

转载 作者:行者123 更新时间:2023-11-28 07:05:05 25 4
gpt4 key购买 nike

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

最佳答案

您可以使用 guardian 模板结构描述 int this blog post .

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

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通过锁,锁锁定了互斥体,你永远不会有竞争条件。

关于c++ - 跨多个线程访问boost ptree,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21880032/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com