にlibevent
次のコードを追加しました。
while (run) {
event_base_loop(base, EVLOOP_NONBLOCK | EVLOOP_ONCE);
}
これを次のように比較すると:
event_base_dispatch(base);
これらの2つのステートメントは等しいですか?
いいえ、event_base_dispatch(base)
呼び出しは と同等ですevent_base_loop(base, 0)
。つまり、イベントの最初のバッチの後に停止することも (dos のようevent_base_loop
にEVLOOP_ONCE
)、イベントの準備ができていない場合にすぐに戻ることもありません (dos のようevent_base_loop
にEVLOOP_NONBLOCK
)。
Nick Mathewson によって書かれた libevent に関する素晴らしい本を読むことをお勧めします: http://www.wangafu.net/~nickm/libevent-book/Ref3_eventloop.html