温馨提示×

c++互斥锁怎么实现

小亿
114
2023-07-13 15:46:37
栏目: 编程语言

在C++中,互斥锁可以通过使用标准库中的`std::mutex`来实现。

下面是一个简单的示例:

```cpp

#include

#include

#include

std::mutex mtx;

void printHello(int id) {

std::lock_guard lock(mtx); // 加锁
std::cout << "Hello from thread " << id << std::endl;

} // 自动解锁
int main() {

std::thread t1(printHello, 1);

std::thread t2(printHello, 2);

t1.join();
t2.join();
return 0;

}``

在上面的示例中,`std::mutex`被用来创建了一个互斥锁对象`mtx`。`std::lock_guard`是一个RAII(资源获取即初始化)类,它会在构造时加锁互斥锁,在析构时解锁互斥锁,确保互斥锁的正确使用。

在`printHello`函数中,通过创建`std::lock_guard`对象`lock`,实现对互斥锁的加锁。这样,当两个线程`t1`和`t2`分别调用`printHello`函数时,只有一个线程能够获得互斥锁,另一个线程会等待直到互斥锁被释放。这样就确保了每次只有一个线程能够输出"Hello from thread X"的信息。

最后,使用`t1.join()`和`t2.join()`等待两个线程执行完毕,然后程序退出。

0