メインループ
出典: フリー百科事典『ウィキペディア(Wikipedia)』
メインループ(Main loop)とは、イベント駆動型GUIなどの機能を持つアプリケーションで典型的な設計手法。イベントループ(Event loop)とも呼ばれる。常に実行されているループを持ち、ユーザーイベントの有無をループする度に確認し、それイベントを処理する。何らかの方法でイベントを処理すると、制御は前述のループに戻り、次にイベントが発生するまでループを回り続ける。このようなプログラムではループが最上位の制御構造となっており、そのため「メイン」と名づけられている。
この手法は以下のような他の手法とは対照的である:
- 古くからある、単純に一回動作して終了するプログラム。この種のプログラムは情報処理の最初期からあり、ユーザーとの対話手段を持たない。現在も主にCUI指向のプログラムでよく使われている。各種パラメータを指定して起動される。
- メニュー駆動型設計。この場合も一種のメインループは存在するが、ユーザーから見てイベント駆動的ではない。イベント駆動の代わりとして、階層型のメニューを順次選択していって、希望する動作を指定する。このメニューを通した限定的な対話性がある。
最近のアプリケーションの多くはメインループを持つ。ただし、プリエンプティブ・マルチタスクを使用するとメインループはしばしば中断され、そのアプリケーションに実際に何らかのイベントが発生したときだけ再開されるようになる。これはアプリケーションがイベントの到着を確認しながら待つ(ポーリング)よりも効率的である。ポーリングはプリエンプティブでないマルチタスクでは一般的な手法であった。
以下の擬似コードはメインループの典型例である:
begin( my_program ) initialize_everything; mainloop: event = next_event; process_event( event ); if ( event = quit ) terminate; else goto mainloop; end;