C++中的锁
互斥锁
mutex(mutual exclusion)是C++中一种用于保证资源在某一时刻只有一个线程访问的同步原语(synchronization primitive)。这用于避免竞态条件(race conditions)并保证共享数据的线程安全访问。
一个最基本的使用互斥锁std::mutex
进行线程互斥访问的例子:
- 引入相关头文件
- 定义互斥锁,用于保障共享资源的互斥访问
std::mutex mtx;
int shared_counter = 0; // Shared data - 定义函数
incrementCounter
多次增加共享资源计数void incrementCounter(int times) {
for (int i = 0; i < times; i++) {
mtx.lock(); // Acquire the lock
shared_counter++; // Safely access the shared data
mtx.unlock(); // Release the lock
std::this_thread::sleep_for(std::chrono::milliseconds(1)); // Sleep for a while (optional)
}
}