mutex语法以及例子
时间: 2024-10-23 07:06:58 浏览: 26
互斥锁(Mutex),也称为互斥信号量,是一种并发控制机制,用于保护共享资源免受同时访问的冲突。在编程中,它们确保一次只有一个线程可以访问特定部分的代码或数据结构。在C++中,mutex通常通过`std::mutex`库来实现。
下面是一个简单的C++示例,展示了如何使用`std::mutex`:
```cpp
#include <thread>
#include <mutex>
std::mutex mtx; // 创建一个全局互斥锁
void print_number(int number) {
std::lock_guard<std::mutex> lock(mtx); // 使用lock_guard自动获取并释放锁
std::cout << "Thread " << std::this_thread::get_id() << ": " << number << '\n';
}
int main() {
std::vector<std::thread> threads;
for (int i = 0; i < 5; ++i) {
threads.push_back(std::thread(print_number, i));
}
for (auto& thread : threads) {
thread.join(); // 等待所有线程结束
}
return 0;
}
```
在这个例子中,我们创建了一个`mtx`互斥锁,并在`print_number`函数内部,每个线程都会先尝试获取锁。当一个线程进入临界区(代码块被锁定的部分)后,其他试图进入的线程将被阻塞直到前一个线程释放锁。这有助于防止数据竞争,保证了在同一时间只有一个线程能修改共享变量。
阅读全文