在C++中,可以使用互斥鎖(mutex)、條件變量(condition variable)和信號(hào)量(semaphore)等同步機(jī)制來(lái)實(shí)現(xiàn)進(jìn)程之間的同步。
#include <mutex>
std::mutex mtx;
void func() {
std::lock_guard<std::mutex> lock(mtx); // 加鎖
// 訪問(wèn)共享資源
} // 解鎖
#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(); // 喚醒一個(gè)等待在條件變量上的線程
}
#include <semaphore>
std::semaphore sem(1); // 初始值為1
void func() {
sem.acquire(); // P操作
// 訪問(wèn)共享資源
sem.release(); // V操作
}
以上是常用的C++同步機(jī)制,可以根據(jù)具體需求選擇合適的機(jī)制來(lái)實(shí)現(xiàn)進(jìn)程之間的同步。