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

溫馨提示×

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
咸阳市| 双桥区| 紫阳县| 和林格尔县| 元阳县| 青神县| 大余县| 巨野县| 朝阳区| 永德县| 平遥县| 仙桃市| 长子县| 东明县| 武定县| 正定县| 黎川县| 株洲市| 冷水江市| 雅安市| 孟连| 板桥市| 临西县| 保德县| 延长县| 庆城县| 蓬溪县| 荆州市| 金山区| 河西区| 云南省| 东乡县| 遂昌县| 吉隆县| 全南县| 西贡区| 平昌县| 新闻| 阜南县| 青神县| 石家庄市|