0

ブーストを使用してスレッド プールを作成するためのこのレシピを見つけました: http://think-async.com/Asio/Recipes。私はそれを実行しましたが、動作します。ただし、50ミリ秒ごとに発生するタスクがあります。

現在、1 つの解決策は、50 ミリ秒ごとにそのようなタスクをスレッド プール、つまり io_service に追加するスレッドを占有することです。余分なスレッドなしでこれを行う方法は本当に考えられません。誰か試してもらえますか?

4

1 に答える 1

2

これを行う 1 つの方法は、使用することですdeadline timer( http://www.boost.org/doc/libs/release/doc/html/boost_asio/tutorial/tuttimer2.htmlを参照)。

ただし、それはあなたが持っている他のタスクによって異なりますio_service。たとえば、比較的高速な関数を にスケジュールする場合io_serviceは、必ず を使用する必要がありますdeadline_timer。ただし、非常に長いタスクをスケジュールし、この定期的なタイムアウト ハンドラをほぼ等間隔で実行する必要がある場合は、次の 2 つの可能性があります。

  1. 十分なスレッドを提供io_service::run()します(リンクの例とまったく同じように、複数のスレッドが同時にメソッドを呼び出すことができます)

  2. 専用スレッドでタイマーを処理する

于 2012-08-19T07:45:35.510 に答える