在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()`等待兩個線程執行完畢,然后程序退出。