在C++中,可以使用互斥鎖(mutex)來實現多線程環境下對queue的操作。
std::mutex mtx;
// 加鎖
std::lock_guard<std::mutex> lock(mtx);
// 對queue進行操作,比如push、pop等
// 解鎖
以下是一個使用互斥鎖實現多線程操作queue的示例代碼:
#include <iostream>
#include <thread>
#include <queue>
#include <mutex>
std::queue<int> myQueue;
std::mutex mtx;
void producer() {
for (int i = 0; i < 10; ++i) {
std::lock_guard<std::mutex> lock(mtx);
myQueue.push(i);
std::cout << "Producer: " << i << std::endl;
}
}
void consumer() {
for (int i = 0; i < 10; ++i) {
std::lock_guard<std::mutex> lock(mtx);
if (!myQueue.empty()) {
int value = myQueue.front();
myQueue.pop();
std::cout << "Consumer: " << value << std::endl;
}
}
}
int main() {
std::thread producerThread(producer);
std::thread consumerThread(consumer);
producerThread.join();
consumerThread.join();
return 0;
}
在上述代碼中,producer線程向queue中推送數據,而consumer線程從queue中取出數據。互斥鎖(mtx)用來保護對queue的push和pop操作,以避免競爭條件的發生。