阅读量: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
,但在实际应用中,你可能需要根据具体需求选择更高效的并发数据结构或同步机制。