コンソール モードで実行されているほとんどのサーバーでは、サーバーがプレイヤーの死亡などのテキストを出力している間、管理者はコマンドを入力することができます。
この効果をどのように再現するかを考えていました。私はあちこちを検索しましたが、それがどのように行われたかについては少しもわかりません。
コンソール モードで実行されているほとんどのサーバーでは、サーバーがプレイヤーの死亡などのテキストを出力している間、管理者はコマンドを入力することができます。
この効果をどのように再現するかを考えていました。私はあちこちを検索しましたが、それがどのように行われたかについては少しもわかりません。
スレッドについて学ぶ必要があります。
すべてのプログラムには少なくとも 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
これは、スレッドを使用して実現されます。
彼らがしていることは基本的にこれです。プログラマは 2 つのスレッドを作成し、それぞれにタスクを割り当てます。1 つは出力用で、もう 1 つは入力用です。これらは並行して実行されるため、両方が同時に処理を行います。スレッドは同じバックエンド処理に報告し、そこで入力が使用され、出力が出力スレッドに送信されます。ほとんどの場合、ループ内にあります。これにより、必要な同時効果が作成されます。
実装の詳細については、こちら、 こちら、およびこちらをご覧ください。