在C++中,使用两个线程分别处理同一终端窗口上的输入(I)和输出(O)操作是一种常见的并发编程模式。这种模式可以提高程序的响应性和效率,特别是在需要同时处理用户输入和显示输出的应用程序中。
以下是一个简单的示例,展示了如何在C++中使用两个线程分别处理输入和输出:
#include <iostream>
#include <thread>
#include <mutex>
#include <queue>
#include <condition_variable>
std::mutex mtx;
std::queue<std::string> messages;
std::condition_variable cv;
void input_thread() {
std::string input;
while (true) {
std::getline(std::cin, input);
std::unique_lock<std::mutex> lock(mtx);
messages.push(input);
cv.notify_one();
}
}
void output_thread() {
while (true) {
std::unique_lock<std::mutex> lock(mtx);
cv.wait(lock, [] { return !messages.empty(); });
std::string message = messages.front();
messages.pop();
lock.unlock();
std::cout << "Output: " << message << std::endl;
}
}
int main() {
std::thread in_thread(input_thread);
std::thread out_thread(output_thread);
in_thread.join();
out_thread.join();
return 0;
}
std::mutex
)来保护共享资源。通过合理的设计和同步机制,可以有效解决这些问题,实现高效且稳定的并发程序。
领取专属 10元无门槛券
手把手带您无忧上云