0

高パフォーマンスの C++ アプリケーションの途中でサーバー上の URL に対して ping を実行しようとしていますが、ミリ秒単位が重要です。クエリからの戻りデータは気にしません... 特定の URL に HTTP リクエストを送信して (それをロードさせるため) 必要があるだけで、最も効果的で非ブロッキングの方法を見つけようとしています。これを達成するために。

私のアプリケーションは Boost::ASIO を使用していますが、これを行うためのほとんどの方法は、毎回ソケットを構築および破棄することを伴うようです (残念ながら必要になるかもしれません)。オーバーヘッド、メモリ リーク、ブロッキングなどの原因となることはありません。すばやくソケットを開き、HTTP 要求をオフにして、先に進みます。

そして、これは毎秒何千回も発生する必要があるため、ソケットとオーバーヘッドが重要です (OS をあふれさせたくない)。

これを達成するための最も効率的な方法についてアドバイスはありますか?

本当にありがとう!

4

1 に答える 1

1

毎秒数千の通知が送信されるため、通知ごとにソケット接続を開くことは想像できません。オーバーヘッドのために、おそらく非効率的です。したがって、Casey が提案したように、専用接続を使用してみてください。

メイン スレッドでかなりの処理を行っているように思われるので、ソケット作業用のワーカー スレッドを作成することを検討してください。おそらく、mutex やクリティカル セクションなどのスレッド同期オブジェクトを使用してコードをシングル スレッド化する必要があります。

于 2013-06-19T22:43:40.730 に答える