3

重複の可能性:
基本的なイベントループをどのように実装しますか?

実際には言語固有の質問ではありません。イベントループの効率的な実装は何でしょうか?これまでのところ、私は次のようなものにしか遭遇していません。

while (true) {
    handleEvents();
    sleep(100);
}

これが最善の方法だとは思いません。睡眠時間が短すぎるとCPUを大量に消費し、長すぎるとアプリがかなり反応しなくなります。

それで、もっと良い方法はありますか?

ありがとう

4

1 に答える 1

5

最も一般的なパターンは次のとおりです。

while (WaitForNextEvent()) {
    HandleEvent();
}

処理するイベントがこれ以上ないことを示すためにWaitForNextEvent()戻るfalseことと、最も重要なことは、次のイベントを待機するブロッキングを実行できることです。

たとえば、イベント ソースは、ファイル、ソケット、スレッドのメッセージ キュー、または何らかの種類の待機可能なオブジェクトである可能性があります。HandleEvent()その場合、イベントの準備ができている場合にのみ実行され、イベントの準備が整った直後にトリガーされることを保証できます。

于 2011-07-09T10:29:53.443 に答える