91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

C++ queue多線程操作的方法是什么

c++
小億
123
2023-11-08 19:09:06
欄目: 編程語言

在C++中,可以使用互斥鎖(mutex)來實現多線程環境下對queue的操作。

  1. 創建一個互斥鎖變量:std::mutex mtx;
  2. 使用互斥鎖保護對queue的操作,在需要對queue進行操作的地方加鎖和解鎖:
// 加鎖
std::lock_guard<std::mutex> lock(mtx);

// 對queue進行操作,比如push、pop等

// 解鎖
  1. 在多個線程中使用互斥鎖來保護對queue的操作,以防止競爭條件(race condition)的發生。

以下是一個使用互斥鎖實現多線程操作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操作,以避免競爭條件的發生。

0
宝山区| 共和县| 苗栗县| 赤峰市| 芒康县| 新竹市| 英吉沙县| 澄江县| 高碑店市| 大荔县| 大港区| 南平市| 会东县| 赣榆县| 仙游县| 潢川县| 普兰店市| 沈丘县| 靖西县| 鄂温| 杭锦旗| 武义县| 都昌县| 修水县| 新民市| 云霄县| 承德县| 新源县| 绥德县| 灵川县| 乐清市| 玉树县| 太康县| 阳曲县| 甘洛县| 鹰潭市| 麟游县| 宿迁市| 邻水| 西乌珠穆沁旗| 读书|