C++11 引入了对线程编程的全面支持,使得多线程编程变得更加简单和高效。以下是一些关于 C++11 线程编程的基本概念和最佳实践。
基本概念
std::thread
:用于创建和管理线程。std::mutex
:用于保护共享资源,防止数据竞争。std::condition_variable
:用于线程间的同步。
创建线程
#include <thread>
void threadFunction() {
// 线程执行的代码
}
int main() {
std::thread t(threadFunction);
t.join(); // 等待线程结束
return 0;
}
线程同步
为了确保线程安全,我们需要使用互斥锁(mutex)来同步对共享资源的访问。
#include <mutex>
std::mutex mtx;
void sharedResourceAccess() {
std::lock_guard<std::mutex> lock(mtx);
// 访问共享资源
}
线程通信
std::condition_variable
可以用于线程间的通信。
#include <condition_variable>
#include <thread>
#include <vector>
std::condition_variable cv;
std::mutex cv_m;
bool ready = false;
void producer() {
std::unique_lock<std::mutex> lk(cv_m);
// 生产数据
ready = true;
cv.notify_one();
}
void consumer() {
std::unique_lock<std::mutex> lk(cv_m);
cv.wait(lk, []{return ready;});
// 消费数据
}
扩展阅读
更多关于 C++11 线程编程的内容,请参阅本站 C++11 线程编程深入指南。
图片
线程并发
中心化处理,提高效率:
线程同步
互斥锁保护共享资源: