在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
,但在實際應用中,你可能需要根據具體需求選擇更高效的并發數據結構或同步機制。