在C++中,互斥锁可以通过使用标准库中的`std::mutex`来实现。
下面是一个简单的示例:
```cpp
#include #include #include std::mutex mtx; void printHello(int id) { std::lock_guard } // 自动解锁 std::thread t1(printHello, 1); std::thread t2(printHello, 2); t1.join(); }`` 在上面的示例中,`std::mutex`被用来创建了一个互斥锁对象`mtx`。`std::lock_guard`是一个RAII(资源获取即初始化)类,它会在构造时加锁互斥锁,在析构时解锁互斥锁,确保互斥锁的正确使用。 在`printHello`函数中,通过创建`std::lock_guard`对象`lock`,实现对互斥锁的加锁。这样,当两个线程`t1`和`t2`分别调用`printHello`函数时,只有一个线程能够获得互斥锁,另一个线程会等待直到互斥锁被释放。这样就确保了每次只有一个线程能够输出"Hello from thread X"的信息。 最后,使用`t1.join()`和`t2.join()`等待两个线程执行完毕,然后程序退出。
std::cout < "hello="" from="" thread="" "="">< id><>
int main() {
t2.join();
return 0;