欢迎来到程序员中文网!

首页 Linux Mysql C++ Python PHP JavaScript 资源下载 动态 开源推荐
我要投稿 投诉建议

C++ 多线程编程:std::thread、mutex 与 condition_variable

时间:2026年08月12日 05:42:24 浏览:1

C++ 多线程编程:std::thread、mutex 与 condition_variable


C++11 提供了标准线程库,支持跨平台多线程开发。


1. 创建线程


#include <thread>
#include <iostream>

void task(int id) {
std::cout << "Thread " << id << std::endl;
}

int main() {
std::thread t1(task, 1);
std::thread t2([](int x) { std::cout << x << std::endl; }, 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);
++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);

多线程编程务必注意死锁与数据竞争,RAII 锁管理是良好实践。