在C++中,可以使用std::mutex
來實現多線程輸出。std::mutex
是C++11標準引入的線程同步原語,可以用來保護共享資源,防止多個線程同時訪問。
下面是一個使用std::mutex
來實現多線程輸出的示例代碼:
#include <iostream>
#include <thread>
#include <mutex>
std::mutex g_mutex;
void printHello(int threadID) {
// 加鎖
std::lock_guard<std::mutex> lock(g_mutex);
// 輸出
std::cout << "Hello from thread " << threadID << std::endl;
}
int main() {
std::thread t1(printHello, 1);
std::thread t2(printHello, 2);
t1.join();
t2.join();
return 0;
}
在上面的示例代碼中,我們定義了一個printHello
函數來輸出線程的ID。在函數中我們使用std::lock_guard<std::mutex>
來對g_mutex
進行加鎖,確保多個線程不會同時訪問std::cout
,從而避免輸出混亂的情況。
在main
函數中,我們創建了兩個線程t1
和t2
,分別調用printHello
函數輸出線程的ID。最后通過調用t1.join()
和t2.join()
來等待線程執行完畢。
通過這種方式,我們可以實現多線程輸出,確保輸出的順序是正確的。