C++ 并发编程:std::thread 与同步机制
C++11 提供了标准线程库,支持多线程编程。
1. 创建线程
#include <thread>
#include <iostream>
void task(int id) {
std::cout << 'Thread ' << id << ' running\n';
}
int main() {
std::thread t1(task, 1);
std::thread t2([](int x) { std::cout << x << '\n'; }, 2);
t1.join();
t2.join();
return 0;
}2. 互斥锁(std::mutex)
std::mutex mtx;
int counter = 0;
void increment() {
std::lock_guard<std::mutex> lock(mtx); // RAII 自动解锁
++counter;
}3. 条件变量(std::condition_variable)
用于线程间事件通知。
std::condition_variable cv;
bool ready = false;
// 等待线程
std::unique_lock<std::mutex> lock(mtx);
cv.wait(lock, []{ return ready; });
// 通知线程
ready = true;
cv.notify_one();4. 原子操作(std::atomic)
std::atomic<int> counter(0);
counter.fetch_add(1, std::memory_order_relaxed);多线程编程务必注意死锁和数据竞争。
