同じ要素の読み取りと書き込みを同時に行わないという条件で、安全な同時読み取りおよび書き込みアクセスを提供する、ある種の連想コンテナを探しています。
基本的に私はこの設定をしています:
スレッド1: Aを作成し、Aをコンテナーに書き込み、ネットワーク経由でAを送信します。
スレッド2: Aへの応答を受信し、コンテナーからAを読み取り、いくつかの処理を実行します。
シリアルに処理されるAに対して複数の応答を受け取る可能性がありますが、Aを1回だけ書き込むことを保証できます。これはまた、Aへの応答を送信した後にのみ受信できるため、Aの読み取りと書き込みを同時に行わないことを保証します。
つまり、基本的に、要素への書き込みが他の要素と混同しないコンテナを探しています。たとえば、std::map
(または他のツリーベースの実装)は、基礎となる実装が赤黒木であるため、この条件を満たしていません。そのため、特定の書き込みによってツリーのバランスが再調整され、同時読み取り操作が失敗する可能性があります。
通常のハッシュテーブルの実装が私の基準を満たすという私の仮定に基づいて、これでうまくいくと思いますがstd::hash_map
、boost::unordered_set
私は肯定的ではなく、私に教えてくれるドキュメントを見つけることができません。他の誰かがこれらを同様に使用しようとしましたか?