在C++中實(shí)現(xiàn)多線程安全的輸入可以通過使用互斥鎖(mutex)來保護(hù)共享資源。下面是一個(gè)簡單的示例代碼:
#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;
}
在上面的示例中,我們使用了一個(gè)互斥鎖mtx
來保護(hù)輸入輸出操作。當(dāng)一個(gè)線程進(jìn)入getInput
函數(shù)時(shí),它會(huì)首先鎖住互斥鎖,然后進(jìn)行輸入輸出操作,最后再釋放互斥鎖。這樣可以確保每次只有一個(gè)線程在進(jìn)行輸入操作,從而避免多個(gè)線程同時(shí)操作輸入流導(dǎo)致數(shù)據(jù)混亂的情況發(fā)生。
通過使用互斥鎖,我們可以實(shí)現(xiàn)多線程安全的輸入輸出操作。需要注意的是,互斥鎖的使用需要謹(jǐn)慎,避免死鎖等問題的發(fā)生。