在C++中,互斥锁可以通过使用标准库中的`std::mutex`来实现。
下面是一个简单的示例:
```cpp
#include
#include
#include
std::mutex mtx;
void printHello(int id) {
std::lock_guard
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()`等待两个线程执行完毕,然后程序退出。