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

溫馨提示×

C++ notify在多線程編程中的應用

c++
小樊
99
2024-08-29 07:25:05
欄目: 編程語言

在C++多線程編程中,notify通常與條件變量(condition variables)一起使用,以實現線程間的同步和通信。條件變量允許一個或多個線程等待,直到另一個線程發出通知為止。這種機制可以用于解決生產者-消費者問題、讀者-寫者問題等常見的并發問題。

notify函數有兩種形式:notify_onenotify_allnotify_one會喚醒一個正在等待的線程,而notify_all會喚醒所有正在等待的線程。

下面是一個簡單的示例,展示了如何在C++中使用std::condition_variablenotify函數實現多線程同步:

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

std::mutex mtx;
std::condition_variable cv;
int value = 0;

void worker_thread() {
    std::unique_lock<std::mutex> lock(mtx);
    cv.wait(lock, [] { return value != 0; }); // 等待條件滿足
    std::cout << "Worker thread executed, value: "<< value<< std::endl;
}

int main() {
    std::thread worker(worker_thread);

    {
        std::lock_guard<std::mutex> lock(mtx);
        std::cout << "Main thread setting value to 10"<< std::endl;
        value = 10;
    }

    cv.notify_one(); // 通知等待的線程

    worker.join();
    return 0;
}

在這個示例中,我們創建了一個工作線程worker_thread,它會等待value變量的值不為0。主線程在設置value為10后,使用cv.notify_one()喚醒等待的工作線程。這樣,工作線程可以繼續執行,并輸出value的值。

0
东城区| 汪清县| 漠河县| 务川| 尤溪县| 建始县| 邢台县| 寻甸| 黔江区| 衡东县| 勃利县| 饶河县| 黎城县| 邢台县| 丹棱县| 丽水市| 庄浪县| 娄底市| 三江| 周口市| 云安县| 肥乡县| 陆良县| 枣强县| 乡城县| 蛟河市| 惠东县| 丹巴县| 广河县| 丰台区| 平乡县| 平山县| 唐海县| 佛教| 德令哈市| 花莲县| 南涧| 晋宁县| 班戈县| 西林县| 方城县|