在C++中實現多線程安全的輸入可以通過使用互斥鎖(mutex)來保護共享資源。下面是一個簡單的示例代碼:
#include <iostream>
#include <thread>
#include <mutex>
std::mutex mtx;
void getInput() {
mtx.lock();
std::cout << "Enter a number: ";
int num;
std::cin >> num;
std::cout << "You entered: " << num << std::endl;
mtx.unlock();
}
int main() {
std::thread t1(getInput);
std::thread t2(getInput);
t1.join();
t2.join();
return 0;
}
在上面的示例中,我們使用了一個互斥鎖mtx
來保護輸入輸出操作。當一個線程進入getInput
函數時,它會首先鎖住互斥鎖,然后進行輸入輸出操作,最后再釋放互斥鎖。這樣可以確保每次只有一個線程在進行輸入操作,從而避免多個線程同時操作輸入流導致數據混亂的情況發生。
通過使用互斥鎖,我們可以實現多線程安全的輸入輸出操作。需要注意的是,互斥鎖的使用需要謹慎,避免死鎖等問題的發生。