文章目录
在并发编程中,多个线程共享资源时,互斥同步是避免数据竞争和保证数据一致性的关键手段。C++11引入了一系列强大的线程和同步库,包括互斥(mutex
)和条件变量(condition_variable
)
本篇博客将详细介绍 C++11 中的互斥同步机制,重点包括 std::mutex
、std::lock_guard
、std::unique_lock
以及条件变量的使用场景和实现原理。
互斥锁:std::mutex
什么是 std::mutex
std::mutex
是 C++11 提供的最基本的互斥锁,用于保护共享资源,确保同一时刻只有一个线程能够访问该资源。它提供了 lock()
和 unlock()
两个基本方法,分别用于加锁和解锁。
std::mutex
的使用
#include <iostream>
#include <thread>
#include <mutex>
std::mutex mtx; // 全局互斥锁
int counter = 0; // 全局共享资源
void increment() {
mtx.lock(); // 加锁
++counter; // 修改共享资源
mtx.unlock(); // 解锁
}
int main() {
std::thread t1(increment);
std::thread t2(increment)