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

溫馨提示×

C++信號量如何用于線程間通信

c++
小樊
84
2024-07-05 19:30:21
欄目: 編程語言

在C++中,信號量可以通過使用std::mutexstd::condition_variable來實現。下面是一個簡單的例子,展示了如何使用信號量進行線程間通信。

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

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

void producer() {
    while (true) {
        std::unique_lock<std::mutex> lock(mtx);
        
        // Produce some data
        
        semaphore++;
        cv.notify_one();
        
        lock.unlock();
        std::this_thread::sleep_for(std::chrono::seconds(1));
    }
}

void consumer() {
    while (true) {
        std::unique_lock<std::mutex> lock(mtx);
        
        cv.wait(lock, []{ return semaphore > 0; });
        
        // Consume the data
        
        semaphore--;
        
        lock.unlock();
        std::this_thread::sleep_for(std::chrono::seconds(1));
    }
}

int main() {
    std::thread producerThread(producer);
    std::thread consumerThread(consumer);
    
    producerThread.join();
    consumerThread.join();
    
    return 0;
}

在上面的例子中,semaphore變量用于表示生產者和消費者之間的信號量。生產者生產數據后,會增加semaphore的值并通知消費者;消費者在收到通知后會減少semaphore的值并消費數據。通過std::condition_variable實現了線程之間的通信和同步。

0
奎屯市| 巴彦县| 收藏| 巴青县| 河北省| 莱芜市| 安丘市| 自贡市| 罗田县| 承德县| 噶尔县| 开原市| 深泽县| 本溪| 栾城县| 华安县| 中阳县| 临高县| 东阳市| 盐津县| 崇义县| 新宾| 蓬莱市| 酉阳| 江华| 巴楚县| 镶黄旗| 故城县| 平泉县| 呼玛县| 武平县| 卓尼县| 和平县| 左贡县| 铜川市| 甘德县| 廉江市| 泰来县| 通城县| 建湖县| 绥江县|