setitimer を使用して 3 つ以上のタイマーを構成するにはどうすればよいですか? Linuxのマニュアルページには、「システムは各プロセスに3つのインターバルタイマーを提供し、それぞれが個別の時間ドメインで減少します。タイマーが期限切れになると、シグナルがプロセスに送信され、タイマーが(潜在的に)再起動します」.
3 に答える
itimer メカニズムでは 3 つに制限されています。timerfd_create()
この制限がない、より最新の代替品 (Linux のみではありますが) を参照してください。また、シグナルの代わりにファイル記述子でも機能するため、select/poll で実装されたイベント ループとより簡単に統合できます。
Linux はtimer_create
(2.6 以降) 新しいインターバル タイマーを作成するために提供しています: http://www.kernel.org/doc/man-pages/online/pages/man2/timer_create.2.html。
基本的なタイマーしかないシステムを使用している場合は、ユーザー作成のライブラリーでいつでも独自のタイマーを作成できます。
timerfd_create
(Linux固有のものも)あります。
単一のタイマーのチェックを使用して、mod
それを多くのタイマーに抽象化します。これは、Googleがjavascriptで複数のタイマーを処理する方法であり、ここでも機能すると思います。その理由は、複数のタイマーを連続して実行するよりも桁違いに高速だからです。
言い換えれば、5 ミリ秒ごとに実行されるタイマーがあり、それが実行された回数のカウントがある場合mod
、そのカウントが可能であり、そのうちの 10 回ごとに 50 ミリ秒のタイマーも同様になります。