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