2011-07-09 9 views
2

可能性の重複:本当に
How would you implement a basic event-loop?効率的なイベントループの実装ですか?

ない言語固有の問題。イベントループの効率的な実装は何でしょうか? 、睡眠時間が短すぎる場合、それはCPUをたくさん食べるようになる、それが長すぎるかどう -

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

私は最善の方法だとは思わない。これまでのところ、私はこのような何かを唯一出会いましたアプリはかなり反応しません。

だから、もっと良い方法がありますか?

おかげ

答えて

4

最も一般的なパターンは次のとおりです。を待ってブロックするを実行することができるという、最も重要なのは、処理すべきより多くのイベントがない示し、しfalseを返すWaitForNextEvent()

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

次のイベントのために。

たとえば、イベントソースはファイル、ソケット、スレッドのメッセージキュー、または別の種類のwaitable objectである可能性があります。その場合、HandleEvent()は、イベントの準備が整った場合にのみ実行され、イベントが準備完了した直後に起動されることが保証されます。

+0

ありがとう、私はepollについていくつかのことをgoogled、選択、libeventとそのようなもの、彼らは私が欲しいものをやっているようだ:) – Justinas

関連する問題