Free-Pascalでは、一連のスレッド(TThread)でほとんどの作業を実行するクロスプラットフォームコンソールプログラムを作成します。
メインプログラムは、時々いくつかのユーザーコマンドを受け取り、それらを実行するために(そしてプログラム全体を実行し続けるために)のみ使用されます。
プログラムのメインループとしてのこのループは、CPUを使用せずにWindowsとLinuxの両方で完全に機能します。
repeat
Write('> ');
ReadLn(s);
// execute command
until s='exit';
しかし、メインプログラムにいくつかの作業を実行するように命令するスレッドが必要です。これは、別のスレッドからのReadLnを停止して続行し、コマンドフラグを確認する方法が必要であることを意味します。どういうわけかEnterキーを押してReadLnをだまして終了させることができれば、それで問題ありません。
ユーザーの文字列またはキーの押下をリッスンし、同時に他のスレッドからコマンドを実行できるクロスプラットフォームのメインループを作成する他の方法はありますか?