さまざまな間隔で更新する必要があるアイテムのリストがあります。リストは、何千ものアイテムに成長する可能性があります。各項目の間隔が異なる可能性があります。アイテムごとに 1 つのタイマーを作成すると、システムがスレッドで飽和状態になりますか? 一連のアイテムの最小間隔に等しいタイマーを 1 つ作成し、更新のたびにカウンターをインクリメントしてから、カウンターが他の間隔と等しいかどうかを確認する方がよいのではないかと考えていました。最小間隔が他のすべての間隔の倍数である場合、これは機能するはずです。助言がありますか?
5203 次
2 に答える
12
Boostはタイマーごとにスレッドを使用せず、タイマーキューを保持します。すべてのタイマーはboost::asio::io_service
、実際の作業を行うオブジェクトを使用して作成されます。
このオブジェクトは、複数のスレッドから明示的に実行する場合boost::asio::io_service::run()
、1つ以上のスレッドで作業をディスパッチできますが、タイマーとスレッドの間に1対1の対応はなく、Asioは背後にスレッドを作成しません。
于 2010-03-09T01:52:28.110 に答える
1
Asioの最近のバージョン、Boost 1.43 以降では、 Linux for stimerfd_create(2)
で API を使用します。deadline_timer
利用可能な場合、Linux でタイマーをディスパッチするために timerfd を使用するように変更されました。
于 2013-03-10T05:02:14.240 に答える