0

私は現在、ブースト::スレッド/スレッドプールとスレッドローカルストレージを基本的に調査して、スレッドのプールのジョブキューに1つのデータグラムのコピーを実現しています。

現在の設定では、1:1 設定を使用して、疎結合された 1 つのデータグラムをあるスレッドから別のスレッドにカスタム通知キューを使用してコピーします。そのキューは複数のリーダー スレッドをサポートしますが、すべてのリーダーがメッセージを消費します。

現在、thread_local_storage バリアントによってキューを拡張して、各データグラムをプール内の各スレッドのジョブ キューにコピーすることを検討しています。

しかし、何も見つからなかったにもかかわらず、ブーストがこの種の操作をすでにサポートしている可能性があるのではないかと思っていました。すぐに使用できるブーストは、プール内のすべてのスレッドのローカル ストレージへの単一のコピーをサポートしていますか?

どうもありがとうございました!

4

1 に答える 1

0

すべてのスレッドにデータのコピーが必要なのはなぜですか? 私が考えることができる唯一の理由は、スレッドが他のスレッドに表示されるべきではないデータに変更を加えているためです。変更がない場合は、データへの参照 (別名ポインター) をすべてのスレッドに渡すだけです。変更が必要な場合は、すべてのスレッドにも参照を渡し、スレッドにデータのコピーを作成させます。データが使用されなくなったときにデータを解放する必要がある場合は、共有ポインターを使用します。

スレッド ローカル ストレージは、ほとんどの場合、古いスタイルの静的変数をエミュレートするために使用されます。

于 2013-04-10T09:35:46.427 に答える