gpt4 book ai didi

c++ - C++的并发集?

转载 作者:太空宇宙 更新时间:2023-11-04 11:25:48 25 4
gpt4 key购买 nike

我正在寻找 C++ 中的无锁数据结构来替换以下内容:

pthread_mutex_lock(plock);
set.insert(element);
pthread_mutex_unlock(plock);

该集合应该支持.insert().size(),复杂度至多为O(logN),有一个迭代器,并且应该能够保持它的使用自定义比较器订购。基本上与 Java 中的 ConcurrentSkipListSet 功能相同。理想情况下,它应该与平台无关。

我正在查看 CDS:http://libcds.sourceforge.net/doc/cds-api/modules.html但不确定哪种数据结构可以实现目标。对于某些数据结构,该文档实际上并不复杂。

任何建议都很好,谢谢!

最佳答案

使用 C++11,编写您自己的代码非常容易:

template <typename T, typename Compare = std::less<T>>
class concurrent_set
{
private:
set::set<T, Compare> set_;
std::mutex mutex_;

public:
typedef typename std::set<T, Compare>::iterator iterator;
// etc.

std::pair<iterator, bool>
insert(const T& val) {
std::unique_lock<std::mutex> lock(mutex_);
return set_.insert(val);
}

size_type size() const {
std::unique_lock<std::mutex> lock(mutex_);
return set_.size();
}
// same idea with other functions
};

没有 C++11,也有 boost::mutex

关于c++ - C++的并发集?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26747641/

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