【发布时间】:2013-10-06 13:25:40
【问题描述】:
我有一个 C++ 控制台应用程序,它不断打印一些输出,同时它还接受来自用户的命令(使用 std::cin) - 输出和输入发生在不同的线程中。
如果我在出现一些输出时写了一个文本,那么写的文本会与应用程序输出混合在一起。我怎样才能防止这种行为?
为了解决这个问题,我需要在输入文本的那一行显示一行。我会在 Minecraft Bukkit 服务器的解决方案中激发自己的灵感 - 但是对于 C++,我需要相同的解决方案。
【问题讨论】:
-
那么,期望的行为是什么?发生这种情况是很自然的。如果您想要控制台聊天客户端(例如
irssi),请查看ncurses之类的库,而不是尝试仅将其与cin/cout一起修补。 -
你可以使用一些锁...
-
@Jarod42 这听起来不是个好主意。在聊天程序的示例中,这意味着一旦您开始输入,您会错过所有条新消息,直到您按下回车键,然后才能看到它们。