在C++中,线程同步是确保多个线程在访问共享资源时能够协调一致的重要概念。以下是一些常用的线程同步方法:
1. 互斥锁(Mutexes)
互斥锁用于保护共享资源不被多个线程同时访问。当一个线程需要访问共享资源时,它必须先锁定互斥锁,访问完毕后再解锁。
```cpp
#include <mutex>
std::mutex mtx;
void safeFunction() {
std::lock_guard<std::mutex> lock(mtx);
// 临界区:在这个代码块中,mtx 被锁定
}
```
2. 条件变量(Condition Variables)
条件变量用于线程间的协调,允许一个或多个线程在某些条件满足之前挂起,并在条件满足时被唤醒。
```cpp
#include <condition_variable>
std::mutex mtx;
std::condition_variable cv;
void waitingFunction() {
std::unique_lock<std::mutex> lock(mtx);
cv.wait(lock, []{ return some