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

溫馨提示×

c++中wait的用法是什么

c++
小億
153
2024-04-08 16:53:37
欄目: 編程語言

在C++中,wait通常用于線程同步機制中,用于使當前線程進入等待狀態,直到條件滿足或者被通知后才繼續執行。wait通常與mutexcondition_variable一起使用。具體用法如下:

  1. 使用std::unique_lock<std::mutex>對象對mutex進行加鎖。
  2. 調用condition_variable對象的wait方法,將unique_lock對象傳入,使當前線程進入等待狀態。
  3. 在另一個線程中滿足某個條件時,調用condition_variable對象的notify_onenotify_all方法,通知等待的線程。
  4. 等待的線程被通知后,wait方法返回,繼續執行。

示例代碼如下:

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

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

void wait_func() {
    std::unique_lock<std::mutex> lck(mtx);
    while (!ready) {
        cv.wait(lck);
    }
    std::cout << "Thread is notified." << std::endl;
}

void notify_func() {
    std::this_thread::sleep_for(std::chrono::seconds(2));
    {
        std::lock_guard<std::mutex> lck(mtx);
        ready = true;
    }
    cv.notify_one();
}

int main() {
    std::thread t1(wait_func);
    std::thread t2(notify_func);
    
    t1.join();
    t2.join();
    
    return 0;
}

在上面的示例中,wait_func線程等待ready狀態變為truenotify_func線程在2秒后將ready狀態設置為true并通知等待的線程。

0
庆云县| 阿坝| 吴堡县| 靖边县| 开鲁县| 天峻县| 富顺县| 曲阳县| 余姚市| 三门峡市| 来宾市| 哈巴河县| 小金县| 岑巩县| 许昌市| 宿州市| 黄大仙区| 达孜县| 庆云县| 杂多县| 邻水| 乌兰察布市| 宝应县| 广汉市| 和政县| 图们市| 大足县| 凉山| 基隆市| 巴彦淖尔市| 卢氏县| 万载县| 福泉市| 岳阳县| 睢宁县| 广昌县| 武陟县| 通辽市| 佛坪县| 老河口市| 霍林郭勒市|