中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

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
凤翔县| 九江市| 鄂伦春自治旗| 山东省| 鹰潭市| 眉山市| 陆丰市| 嵩明县| 会同县| 正阳县| 铁岭市| 拉萨市| 宜丰县| 岫岩| 绩溪县| 宁国市| 那曲县| 卢氏县| 宁陕县| 沭阳县| 清原| 句容市| 龙口市| 丹巴县| 都兰县| 河池市| 习水县| 三都| 太保市| 临江市| 长海县| 鸡泽县| 定陶县| 宣恩县| 尉氏县| 青冈县| 军事| 万州区| 右玉县| 达州市| 灵丘县|