私はかなりboost :: asioの新機能ですが、私はすでに数年前から存在していて、広くasioを使用しているプロジェクトに取り組んでいます。私の現在の任務は、システムが行っているさまざまなことについて定期的なメトリクスを追加することです。メトリックの1つは、boost :: asio :: io_serviceの作業キューとタイマー・キューが実行時の任意の期間にどれだけ深くなるかを観察することです。だから、私はブーストを頼むことができる必要があります:asio :: io_serviceオブジェクトキュー内のオブジェクトの数。boost :: asio :: io_service占有タイマーとポストのキュー長
次の点を考慮して、私が求めているものを説明するために:
boost::asio::io_service asio_service;
asio_service.post(boost::bind(do_work, "eat"));
asio_service.post(boost::bind(do_work, "drink"));
asio_service.post(boost::bind(do_work, "and be merry!"));
std::cout << "There are " << asio_service.XXXX()
<< "things in the post() queue and "
<< asio_service.YYYY() << " timers"
は私の「XXXX()」と「YYYY()」呼び出しが何であるかに同等の機能を得るためにブーストASIOを持つ方法はあります表現?
私はasioタイマーのキューコードを見て、キューが本当に単なるベクトルとリストであることに気付きましたが、どちらもプライベートです。プライベートなので、私はアクセス権を継承することはできません。この1組のメトリックのために、奇妙なビジターパターンを継承したり書いたりする必要はありません。これらのカウントへの直接アクセスは、理想的な;ブーストの特別なバージョンでは、私にアクセス権を与えるためにハックアップするのは理想的ではありません。私はこれを行う方法を探しています。うまくいけば私はこれを最初に尋ねるのではない。
1に些細なハンドラを投稿するために必要な時間を測定することです。キューについての情報を得ることはデバッグに便利です –
キューの長さはパフォーマンスの問題をデバッグするのに絶対に役立ちますが、この小さなハックも大きな助けになります。 – Anne