0

コンソール モードで実行されているほとんどのサーバーでは、サーバーがプレイヤーの死亡などのテキストを出力している間、管理者はコマンドを入力することができます。

この効果をどのように再現するかを考えていました。私はあちこちを検索しましたが、それがどのように行われたかについては少しもわかりません。

4

2 に答える 2

0

スレッドについて学ぶ必要があります。

すべてのプログラムには少なくとも 1 つのスレッドがありますが、ほとんどのコンソール アプリケーションには 1 つしかありません。このように、プログラムは一度に 1 つのことしか実行できません。

2 つのスレッドを持つプログラムが、目標に向かって連携する 2 つのプログラムであると想像してください。

計算を行う 1 つのスレッド、すべての出力を出力するスレッド、およびキーボードからデータを読み取り続けるスレッドを作成できます。これにより、書き込みと読み取りを同時に実行できるプログラムが作成されます。

また、スレッドがプログラムに真の並列処理を提供するには、マルチプロセッサ マシンを使用する必要があることに注意してください。

コンソールとの間で同時にデータを読み書きできる 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

これは、スレッドを使用して実現されます。

彼らがしていることは基本的にこれです。プログラマは 2 つのスレッドを作成し、それぞれにタスクを割り当てます。1 つは出力用で、もう 1 つは入力用です。これらは並行して実行されるため、両方が同時に処理を行います。スレッドは同じバックエンド処理に報告し、そこで入力が使用され、出力が出力スレッドに送信されます。ほとんどの場合、ループ内にあります。これにより、必要な同時効果が作成されます。

実装の詳細については、こちら こちら、およびこちらをご覧ください。

于 2012-09-30T02:43:37.737 に答える