在C++中,進程的同步與互斥通常通過線程的同步與互斥來實現。以下是一些常用的方法:
std::mutex
的lock()
和unlock()
方法來實現。#include <mutex>
std::mutex mtx;
void func() {
mtx.lock();
// 訪問共享資源
mtx.unlock();
}
std::condition_variable
的wait()
, notify_one()
和notify_all()
方法來實現。#include <condition_variable>
std::mutex mtx;
std::condition_variable cv;
void func1() {
std::unique_lock<std::mutex> lck(mtx);
// 條件為假,等待信號
cv.wait(lck);
// 條件為真,繼續執行
}
void func2() {
{
std::lock_guard<std::mutex> lck(mtx);
// 修改條件
}
cv.notify_one(); // 發送信號
}
std::atomic
模板類來實現。#include <atomic>
std::atomic<int> count(0);
void func() {
count.fetch_add(1); // 原子增加操作
}
std::semaphore
或第三方庫來實現。以上是一些常用的方法,可以根據具體的需求選擇合適的同步與互斥機制來保護進程中的共享資源。