ブーストを使用してスレッド プールを作成するためのこのレシピを見つけました: http://think-async.com/Asio/Recipes。私はそれを実行しましたが、動作します。ただし、50ミリ秒ごとに発生するタスクがあります。
現在、1 つの解決策は、50 ミリ秒ごとにそのようなタスクをスレッド プール、つまり io_service に追加するスレッドを占有することです。余分なスレッドなしでこれを行う方法は本当に考えられません。誰か試してもらえますか?
ブーストを使用してスレッド プールを作成するためのこのレシピを見つけました: http://think-async.com/Asio/Recipes。私はそれを実行しましたが、動作します。ただし、50ミリ秒ごとに発生するタスクがあります。
現在、1 つの解決策は、50 ミリ秒ごとにそのようなタスクをスレッド プール、つまり io_service に追加するスレッドを占有することです。余分なスレッドなしでこれを行う方法は本当に考えられません。誰か試してもらえますか?
これを行う 1 つの方法は、使用することですdeadline timer
( http://www.boost.org/doc/libs/release/doc/html/boost_asio/tutorial/tuttimer2.htmlを参照)。
ただし、それはあなたが持っている他のタスクによって異なりますio_service
。たとえば、比較的高速な関数を にスケジュールする場合io_service
は、必ず を使用する必要がありますdeadline_timer
。ただし、非常に長いタスクをスケジュールし、この定期的なタイムアウト ハンドラをほぼ等間隔で実行する必要がある場合は、次の 2 つの可能性があります。
十分なスレッドを提供io_service::run()
します(リンクの例とまったく同じように、複数のスレッドが同時にメソッドを呼び出すことができます)
専用スレッドでタイマーを処理する