5

I/O Completion Ports (IOCP) に基づくアプリケーションにタイマーのサポートを追加する必要があります。タイマーを管理するために特定のスレッドを使用することは避けたいと思います。

Linux では、ファイル記述子 (timerfd.h man を参照) を介して有効期限通知を配信するタイマーを作成できるため、アプリケーションが epoll に基づいている場合、たとえば epoll で使用すると便利です。

Windows では、非同期プロシージャ コール (ACP) で「待機可能なタイマー」を使用できます ( http://msdn.microsoft.com/en-us/library/ms686898(v=VS.85).aspxを参照) 。

興味のある方は、kqueue (BSD、Mac OS) はデフォルトでタイマーをサポートしています (EVFILT_TIMER を参照)。

I/O Completion Ports では、オーバーラップ I/O をサポートするオブジェクトを使用する必要があります。それで、 IOCP 用のそのようなタイマーはありますか?

よろしくお願いします、

セドリック

4

2 に答える 2

5

私の知る限り、期限が切れたときに IOCP の完了を生成するタイマーはありません。

Windows タイマー キューを試すことができます。CreateTimerQueueTimer .

タイマーを実行するために追加のスレッドを使用する独自のタイマー キューを作成することになったので、おそらく役に立たないでしょう。TDD と完全な単体テストを使用してキューを実装する一連の記事については、こちらを参照してください。私は、同じインターフェイスを使用してより高性能な TimerWheel を実装しようとしていますが、これも外部スレッドを使用してタイマーを管理します。

于 2010-07-13T18:01:18.910 に答える