プロジェクト:一般的なチャットプログラム。サーバーは複数のクライアントからのテキストを受信し、各入力をすべてのクライアントに送っていなければなりません。これはshared_ptrの適切な使用ですか?
サーバでは、各クライアントにソケットfdとstd :: queueを含む構造体を持たせたいと思います。各構造体はstd :: listにあります。
入力がクライアントソケットから受け取られているので、私は構造体のリストを繰り返し処理し、新しい入力を各クライアント構造体のキューに入れたいと思います。文字列のコピーはすべてのクライアントに掛けたくないので、文字列は新しい[ed]です。しかし、私はまた、文字列への複数のポインタを持つことの頭痛を避けるために、最後に文字列を削除するときを決めることを望みます。
これは共有ポインタの適切な機会ですか?もしそうなら、shared_ptrはキューに入れるたびにインクリメントされ、キューからポップするとインクリメントされますか?
ありがとうございました。
はい、私はそれが 'std :: list'の適切な使用ではないと思います。 'ベクトル' FTW! :) –
@Billy ONeal - なぜベクターですか? OPの選択肢は、接続が絶えず追加され削除されているものにとっては良いようです。 – Duck
@Duck: 'std :: list'は局所性が悪く、一般的に数回余分なコピー以上のパフォーマンスを傷つけます。 –