在C++中使用Mutex(互斥鎖)來實現多線程同步的方法如下:
包含頭文件:首先要包含頭文件 <mutex>
。
創建Mutex對象:使用 std::mutex
類創建一個Mutex對象。
std::mutex mutex;
mutex.lock()
來加鎖。mutex.lock();
mutex.unlock()
來解鎖。mutex.unlock();
完整示例代碼如下:
#include <iostream>
#include <thread>
#include <mutex>
std::mutex mutex;
void printMessage(int id, const std::string& message) {
mutex.lock();
std::cout << "Thread " << id << ": " << message << std::endl;
mutex.unlock();
}
int main() {
std::thread t1(printMessage, 1, "Hello");
std::thread t2(printMessage, 2, "World");
t1.join();
t2.join();
return 0;
}
在上述示例代碼中,我們創建了一個Mutex對象 mutex
,然后在 printMessage
函數中使用 mutex.lock()
加鎖,在代碼塊結束之前使用 mutex.unlock()
解鎖。這樣可以確保在任意時刻只有一個線程可以訪問共享資源,從而避免競爭條件和數據競爭。