在C++中,可以使用std::mutex
來實現多線程加鎖。下面是一個簡單的示例:
#include <iostream>
#include <thread>
#include <mutex>
std::mutex mtx; // 創建一個互斥鎖
void printNumber(int num) {
mtx.lock(); // 加鎖
std::cout << num << std::endl;
mtx.unlock(); // 解鎖
}
int main() {
std::thread t1(printNumber, 1);
std::thread t2(printNumber, 2);
t1.join();
t2.join();
return 0;
}
在上面的示例中,我們首先創建了一個std::mutex
對象mtx
作為互斥鎖。然后在printNumber
函數中,我們使用mtx.lock()
來加鎖,保證只有一個線程能夠訪問std::cout
輸出語句。在輸出完成后,使用mtx.unlock()
進行解鎖。
在main
函數中,我們創建了兩個線程t1
和t2
,分別調用printNumber
函數,傳入不同的參數。最后,通過t1.join()
和t2.join()
等待兩個線程執行完成。
需要注意的是,互斥鎖應該在使用完后及時解鎖,以避免死鎖的發生。