亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

C++實現線程同步的notify_all

c++
小樊
83
2024-07-21 11:00:05
欄目: 編程語言

在C++中,可以使用std::condition_variable來實現線程同步的notify_all操作。以下是一個簡單的示例代碼:

#include <iostream>
#include <thread>
#include <mutex>
#include <condition_variable>

std::mutex mtx;
std::condition_variable cv;
bool ready = false;

void worker_func(int id) {
    std::unique_lock<std::mutex> lock(mtx);
    cv.wait(lock, []{ return ready; });

    std::cout << "Worker " << id << " is working" << std::endl;
}

int main() {
    std::thread workers[3];

    for (int i = 0; i < 3; i++) {
        workers[i] = std::thread(worker_func, i);
    }

    {
        std::lock_guard<std::mutex> lock(mtx);
        ready = true;
    }
    cv.notify_all();

    for (int i = 0; i < 3; i++) {
        workers[i].join();
    }

    return 0;
}

在上面的代碼中,我們創建了一個std::condition_variable對象cv來實現線程同步。在worker_func函數中,線程會等待在cv上,直到ready變量變為true,然后才會執行工作。在主函數中,我們使用std::lock_guard來保護ready變量的修改,并使用cv.notify_all()通知所有等待在cv上的線程可以繼續執行了。最后,我們使用join()函數等待所有線程執行完畢。

希望這個例子可以幫助理解如何在C++中使用std::condition_variable來實現線程同步的notify_all操作。

0
家居| 昌邑市| 临夏市| 南开区| 景洪市| 郁南县| 宁安市| 广河县| 太仓市| 周至县| 依兰县| 开封县| 白朗县| 琼中| 来安县| 竹溪县| 偃师市| 道孚县| 贵南县| 天祝| 聊城市| 吉首市| 平江县| 宁海县| 达日县| 广东省| 迁安市| 美姑县| 乌兰浩特市| 福建省| 库尔勒市| 通海县| 烟台市| 哈密市| 始兴县| 房山区| 咸丰县| 皋兰县| 吉水县| 恩平市| 黔江区|