0

在大多数以控制台模式运行的服务器上,管理员可以输入命令,同时服务器也会输出诸如玩家死亡等文本。

我只是想知道如何复制这种效果。我到处搜索,甚至不知道它是如何完成的。

4

2 回答 2

0

您需要了解线程

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

将具有两个线程的程序想象成两个程序一起朝着一个目标工作。

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

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

这是一个可以同时从/向控制台读取和写入数据的 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
于 2012-09-30T02:35:44.100 回答
0

这是使用线程完成的。

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

您可以在此处、 此处和此处阅读有关实施的更多信息

于 2012-09-30T02:43:37.737 回答