ノンブロック I/O のシュミレーション

QuickWin は自発的入力を受け付けません。READ または GETCHARQQ が実行されていないときに活動状態ウィンドウに入力を行うと,ビープ音が発生します。このため,文字を受け取るためには READ または GETCHARQQ を使用する必要があります。しかし,このタイプのブロック I/O は,文字が入力されるまでプログラムを休止させることになります。

Fortran Console アプリケーションでは,PEEKCHARQQ を使って,文字がすでに入力されているかどうかを調べることができます。しかし,QuickWin には自発的入力を受け付けるためのコンソール・バッファがないため,PEEKCHARQQ は Fortran QuickWin アプリケーションでは動作しません。この制限のために,Fortran Console アプリケーションのように,PEEKCHARQQ を使って文字がすでに入力されたかどうかを確かめることは不可能です。

QuickWin アプリケーションで PEEKCHARQQ をシュミレーションする 1 つの方法は,マルチスレッド・アプリケーションを使用するというものです。1 つのスレッドが READ または GETCHARQQ を実行し,何らかの文字が入力されるまでブロックします。もう 1 つのスレッドは,ループ中で何らかの有用な作業を行いながら,相手方のスレッドが入力を受け取ったかどうかを検証します。

関連情報については,...\DF98\SAMPLES\QuickWin フォルダにある Visual Fortran サンプルPEEKAPPPEEKAPP3 を参照してください