线程安全的unordered_set
时间: 2023-11-09 17:06:15 浏览: 201
线程安全性
线程安全的unordered_set可以通过使用互斥锁(mutex)来实现。在多线程环境中,可以使用互斥锁来保护unordered_set的并发访问。当一个线程需要对unordered_set进行插入、删除或查找操作时,它需要先获取互斥锁,执行完操作后再释放互斥锁,以确保线程安全。
以下是一个示例代码,演示了如何实现线程安全的unordered_set:
```cpp
#include <iostream>
#include <unordered_set>
#include <mutex>
#include <thread>
std::unordered_set<int> mySet;
std::mutex mtx;
void addToSet(int value) {
std::lock_guard<std::mutex> lock(mtx);
mySet.insert(value);
}
bool isInSet(int value) {
std::lock_guard<std::mutex> lock(mtx);
return mySet.find(value) != mySet.end();
}
int main() {
std::thread t1(addToSet, 1);
std::thread t2(addToSet, 2);
std::thread t3(isInSet, 1);
t1.join();
t2.join();
t3.join();
std::cout << "Set size: " << mySet.size() << std::endl;
std::cout << "Is 1 in set? " << isInSet(1) << std::endl;
return 0;
}
```
阅读全文