RunLoop (他のプラットフォームでは Window Handler、main-loop、event-loop などさまざまな名前が付けられています) の要点は、実行する必要がある場合にのみアプリケーションが実行されるイベント ドリブン アーキテクチャを容易にすることです。ユーザーインタラクション。これはポーリングの反対です。
アーキテクチャの基本は、メッセージが処理可能になるまでスレッドがブロックできるある種のメッセージ キューです。MacOSX および iOS システムでは、キューはMach カーネルRPCport
です。Windows ではカーネル IPC キューであり、X-windows システムでは UNIX ドメインまたはネットワーク ソケットです。
イベントは、他のシステム コンポーネント (ウィンドウ マネージャーや他のアプリケーションなど) によってキューに挿入されます。すべての UI 処理を同じスレッドで実行するために、アプリケーションが他のスレッドからメッセージを送ることもよくあります。
実行ループ自体はアプリケーション空間に存在し、次のようになります。
while (!stop)
{
message = WaitForNextMessage();
DispatchMessage(message);
}
通常、使用する UI フレームワークには、特定の種類のイベントのイベント ハンドラーを登録するためのメカニズムが用意されています。