溫馨提示×

c++的process同步機制

c++
小樊
105
2024-08-17 19:02:40
欄目: 編程語言

在C++中,可以使用互斥鎖(mutex)、條件變量(condition variable)和信號量(semaphore)等同步機制來實現進程之間的同步。

  1. 互斥鎖(mutex):互斥鎖用于保護臨界區(critical section),確保在同一時刻只有一個線程可以訪問共享資源??梢允褂胹td::mutex類來創建和管理互斥鎖。
#include <mutex>

std::mutex mtx;

void func() {
    std::lock_guard<std::mutex> lock(mtx); // 加鎖
    // 訪問共享資源
} // 解鎖
  1. 條件變量(condition variable):條件變量用于線程之間的通信,當某個條件滿足時,喚醒等待在條件變量上的線程??梢允褂胹td::condition_variable類來創建和管理條件變量。
#include <condition_variable>

std::condition_variable cv;

void func() {
    std::unique_lock<std::mutex> lock(mtx);
    cv.wait(lock); // 等待條件變量
}

void another_func() {
    cv.notify_one(); // 喚醒一個等待在條件變量上的線程
}
  1. 信號量(semaphore):信號量用于控制多個進程對共享資源的訪問??梢允褂胹td::semaphore類來創建和管理信號量。
#include <semaphore>

std::semaphore sem(1); // 初始值為1

void func() {
    sem.acquire(); // P操作
    // 訪問共享資源
    sem.release(); // V操作
}

以上是常用的C++同步機制,可以根據具體需求選擇合適的機制來實現進程之間的同步。

0
亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女