在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
函数时,它会首先锁住互斥锁,然后进行输入输出操作,最后再释放互斥锁。这样可以确保每次只有一个线程在进行输入操作,从而避免多个线程同时操作输入流导致数据混乱的情况发生。
通过使用互斥锁,我们可以实现多线程安全的输入输出操作。需要注意的是,互斥锁的使用需要谨慎,避免死锁等问题的发生。
亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>
推荐阅读:c++调用java怎样处理多线程