在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
或第三方库来实现。以上是一些常用的方法,可以根据具体的需求选择合适的同步与互斥机制来保护进程中的共享资源。