c++ - 如何在其他线程输出到控制台时防止输入文本中断?

标签 c++ c multithreading

我有 2 个线程:其中一个不断地向控制台输出一些值,假设每秒递增一个 int 值 - 所以控制台上的每一秒都是 1,2,3... 等等。

另一个线程正在等待用户输入 - 使用命令 cin。

这是我的问题:当我开始输入内容时,当需要计算 int 值时,我的输入会从输入字段中删除,并以 int 值输入控制台。所以当我想输入“hello”时,它看起来像这样:

1
2
3
he4
l5
lo6
7
8

有没有办法阻止我的输入被放入控制台,而其他线程正在写入控制台?

仅供引用,这对于客户端的聊天应用程序是必需的 - 一个线程正在监听消息并在消息一进来就输出此消息,另一个线程正在监听要发送到服务器应用程序的用户输入。

最佳答案

通常终端本身会回显键入的键。您可以关闭它并让您的程序回应它。这个问题会给你如何做的指导Hide password input on terminal

然后您可以只使用一个线程来处理输出。

关于c++ - 如何在其他线程输出到控制台时防止输入文本中断?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18160483/

相关文章:

c++ - 获取c++11中函数的结果类型

CAPL #include 相对路径

c - 为什么fread()函数读取后,光标会跳转到随机位置?

ASP.Net——监视器/锁定或互斥体

python - 如何在 python 中的线程之间传递异常

multithreading - 唤醒/等待比赛锁定?

c++ - 类成员函数指针

c++ - 在 C++11 中同步整个类

函数返回结构的调用约定

c++ - C++ 中的错误分配异常为 char* 分配内存