Next: , Previous: Special Events, Up: Command Loop


20.8 時間待ちと入力待ち

待機関数は、指定時間経過するか入力がくるまで待つように設計してあります。 たとえば、ユーザーに表示を眺める時間を与えるために 計算途中で休止したいでしょう。 sit-forは、休止してスクリーンを更新し、 入力がくるとただちに戻ります。 一方、sleep-forはスクリーンを更新せずに休止します。

— Function: sit-for seconds &optional millisec nodisp

この関数は(処理待ちのユーザーからの入力がなければ)再表示を行い、 seconds秒休止するか、入力がくるまで待つ。 入力がこずに(Event Input Miscinput-pending-pを参照) 指定時間だけ休止した場合は、戻り値はtである。 さもなければ、戻り値はnilである。

引数secondsは整数である必要はない。 それが浮動小数点数であると、sit-forは秒の小数も待つ。 秒単位しか扱えないシステムもあり、 そのようなシステムではsecondsを秒に切り下げる。

省略可能な引数millisecは、ミリ秒単位の追加待ち時間を指定する。 これはsecondsで指定した時間に加えられる。 秒未満を扱えないシステムでは、 millisecに0以外を指定するとエラーになる。

入力がくると再表示をつねに取り止め、 再表示開始まえに入力がくると、いっさい再表示しない。 したがって、処理待ちの入力があると、再表示を強制する方法はない。 しかし、処理待ちの入力がなければ、(sit-for 0)で再表示を強制できる。

nodispnil以外であると、 sit-forは再表示はしないが、 入力がくるとただちに(あるいは指定時間だけ経過すると)戻る。

フレームをアイコンにしたりアイコンにしたフレームを開くと イベントが生成されるため、sit-forは戻る。 see Misc Events

sit-forの普通の目的は、 読者が表示したテキストを読む時間をユーザーに与えることである。

— Function: sleep-for seconds &optional millisec

この関数は表示を更新せずに単にseconds秒だけ休止する。 入力にはいっさい注意を払わない。 nilを返す。

引数secondsは整数である必要はない。 それが浮動小数点数であると、sleep-forは秒の小数も待つ。 秒単位しか扱えないシステムもあり、 そのようなシステムではsecondsを秒に切り下げる。

省略可能な引数millisecは、ミリ秒単位の追加待ち時間を指定する。 これはsecondsで指定した時間に加えられる。 秒未満を扱えないシステムでは、 millisecに0以外を指定するとエラーになる。

遅延を保証したい場合にsleep-forを使う。

現在時刻を取得する関数についてはSee Time of Day