如何在输出文本的同时获取用户输入

时间:2012-09-30 02:32:09

标签: c++

在大多数以控制台模式运行的服务器上,管理员可以输入命令,而服务器也会输出播放器死亡等文本。

我只是想知道如何复制这种效果。我已经搜遍了整个地方,甚至没有任何关于它是如何完成的想法。

2 个答案:

答案 0 :(得分:0)

您需要了解threads

所有程序至少都有一个线程,但大多数控制台应用程序只有一个。这样,程序一次只能做一件事。

想象一个程序有两个线程作为两个程序,共同朝着一个目标。

您可以创建一个执行计算的线程,一个打印所有输出的线程和一个不断从键盘读取数据的线程。这将创建一个可以同时写入和读取的程序。

另外,请记住,您需要使用多处理器计算机才能让线程为您的程序提供真正的并行性。

这是一个ruby示例,可以同时从/向控制台读取和写入数据:

a = Thread.new do
  while true do
    puts "Hi There!"
    sleep(1)
  end
end

b = Thread.new do
  while true do
    puts gets.strip+"!"
  end
end
a.join
b.join

答案 1 :(得分:0)

使用Threads.

完成

他们所做的基本上是这样的;程序员创建两个线程,并为每个线程分配一个任务。一个用于输出,另一个用于输入。由于他们并行运行,他们都同时做他们的东西。线程报告相同的后端处理,其中使用输入,并将输出发送到输出线程。最有可能在循环中。这会产生您想要的同时效果。

您可以详细了解实施here, herehere.