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

溫馨提示×

c++ condition在多線程中的應用

c++
小樊
82
2024-07-24 13:31:15
欄目: 編程語言

在多線程中,條件變量(condition variable)是一種用于線程間通信的機制。條件變量通常與互斥鎖(mutex)一起使用,以實現對共享資源的線程安全訪問。

在C++中,條件變量通常是通過std::condition_variable類來實現的。條件變量主要用于線程之間的同步,常見的用法包括等待某個條件的發生或者通知其他線程條件的發生。

下面是一個簡單的示例,演示了如何在多線程中使用條件變量:

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

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

void worker_thread() {
    // 模擬一些工作
    std::this_thread::sleep_for(std::chrono::seconds(1));

    // 工作完成后通知主線程
    {
        std::lock_guard<std::mutex> lock(mtx);
        ready = true;
    }
    cv.notify_one();
}

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

    // 等待工作完成
    {
        std::unique_lock<std::mutex> lock(mtx);
        cv.wait(lock, []{ return ready; });
    }

    std::cout << "Work completed!" << std::endl;

    worker.join();

    return 0;
}

在上面的示例中,主線程等待工作線程完成工作,工作線程完成工作后通知主線程。主線程使用條件變量cv和互斥鎖mtx來實現等待和通知的機制。

0
龙海市| 阳泉市| 绍兴市| 沐川县| 孟村| 镇安县| 开江县| 明光市| 饶阳县| 辰溪县| 万全县| 江门市| 元朗区| 东明县| 北碚区| 岑巩县| 台南市| 加查县| 水富县| 蒙自县| 万盛区| 玉屏| 丰县| 承德县| 鹤岗市| 读书| 安西县| 色达县| 辉县市| 余姚市| 平遥县| 秦皇岛市| 清水县| 南雄市| 沙雅县| 社旗县| 武功县| 莱阳市| 岗巴县| 甘谷县| 绥芬河市|