gpt4 book ai didi

c++ - 实现线程安全数组

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:19:39 34 4
gpt4 key购买 nike

我想实现一个类似数组的数据结构,允许多个线程同时修改/插入项目。在性能方面如何获得它?我围绕 std::vector 实现了一个包装类,并使用关键部分来同步线程。请在下面查看我的代码。每次一个线程想要处理内部数据时,它可能不得不等待其他线程。因此,我认为它的性能不好。 :( 有什么想法吗?

class parallelArray{
private:
std::vector<int> data;
zLock dataLock; // my predefined class for synchronizing
public:
void insert(int val){
dataLock.lock();
data.push_back(val);
dataLock.unlock();
}

void modify(unsigned int index, int newVal){
dataLock.lock();
data[index]=newVal; // assuming that the index is valid
dataLock.unlock();
}
};

最佳答案

看看 Boost 库中的 shared_mutex。这允许您有多个读者,但只有一个作者

http://www.boost.org/doc/libs/1_47_0/doc/html/thread/synchronization.html#thread.synchronization.mutex_types.shared_mutex

关于c++ - 实现线程安全数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7553338/

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