が"nice"への対策組立マルチキャスからの多ください。
-
19-08-2019 - |
質問
私は現在直しが当社の既存の独自のソケットのラッパーコードを使用力に認識できるよういくつかの重労働です。おそらく最も複雑な地域の既存のコードは、マルチキャスト取り扱います。このコードでは中間層のサーバができるだ一つのシステムに送信するマルチキャストボックス、これらを用いた表現の変更、ユーザーのシステム。
その理由をコードすることは複雑であり、エラーが発生しやすいのはもっとも多く使用する多数のrawバッファの位マルチキャストによるといいます。でも効果がある。Asioってこの問題を前に、そのなっていたのでいいと思っているのかどのように人々に行っています。
そのようなものを使用。あなたがあることをきっかけにして、自分の仕事のないようなコードしていますか。またはあC++テンプレート(ブ又はその他)うことができるこのような仕事?
明らかにしてたくさんのものや自分を使用STLコンテナバッファのパケットの代わりに原配列がこのコードする必要も高ます。大型設があり膨大な数のパケットに飛んで対応を行うための近くにリアルタイムに可能です。
よろしくお願意思います。
Jamie
解決
なんな方におすすめなのがうれ十分な情報のための詳細な回答があり、一般的なポイントを考えるためのリアルタイムでの取り扱いマルチキャストデータです。
- 使用している場合は、原UDPマルチキャストょうある種のプロトコルの配列に使うことに対応するため、紛失または重複パケット.何でも最適化したい, 誘惑 の積層とアプリレーションインプロトコル層します。
std::vector
, は、最も目がくのと同じような原動的に割り当てられた文字バッファです。んで敬遠するものであり、これらだけで抽象化レイヤー.ある場合どうしたらよいかということですしかしながら:- さくて静的に割り当てられたバッファ
- が必要な場合は所有権移転外のバッファに下がればデザイン申込み方法は次の通,
swap()
するのに十分な)
- Preallocationでください!ができるセットバッファを利用する際には、利用データが取り消すことができで最もダイナミックな割り当てらに高速化しまうのです。
- 最小メモリです。ま処理できるデータを単一の呼び出しスタックできる可能性があるのを避ける。まpassデータを別のスレッドしてますが、強制的にコピーします。
- アプリケーションの場合は対応できるチャンクのバッファーではなく集計データを単一のバッファー、
writev
やreadv
.
とは思わず缶溶出されます。ブASIO, libevent
, など。すべて対応ソケット抽象化のためにだだけのデータはお客様の責任まれています。
所属していません StackOverflow