如何在C++中使用set集合进行多线程操作

avatar
作者
筋斗云
阅读量:0

在C++中,std::set 是一个关联容器,它包含一组唯一的对象

以下是一个简单的示例,展示了如何在C++中使用 std::set 和多线程:

#include<iostream> #include <set> #include<thread> #include <mutex>  std::set<int> my_set; std::mutex mtx;  void insert_numbers(int start, int end) {     for (int i = start; i <= end; ++i) {         std::unique_lock<std::mutex> lock(mtx);         my_set.insert(i);         lock.unlock();     } }  int main() {     std::thread t1(insert_numbers, 1, 100);     std::thread t2(insert_numbers, 101, 200);      t1.join();     t2.join();      for (const auto& num : my_set) {         std::cout<< num << " ";     }     std::cout<< std::endl;      return 0; } 

在这个示例中,我们创建了两个线程,每个线程都会向 my_set 插入一系列数字。为了确保线程安全,我们使用了互斥锁(std::mutex)来保护对 std::set 的访问。当一个线程持有锁时,其他线程必须等待,直到锁被释放。

注意:虽然这个示例展示了如何在多线程环境中使用 std::set,但在实际应用中,你可能需要根据具体需求选择更高效的并发数据结构或同步机制。

广告一刻

为您即时展示最新活动产品广告消息,让您随时掌握产品活动新动态!