私は並列プログラミングについてはまったく新しいです。現在、問題があり、TBB で解決しようとしています。
問題を単純化するために、複数の人 (タスク) がボールを拾い、ボールの数字のハッシュ値に従ってコンテナー (concurrent_vector) に入れると想像できます。ロスレスであることを確認する必要があるためです。ボールはリンク リストとして表されます (これが、concurrent_hashmap の代わりに concurrent_vector を使用する理由です。ランダム アクセスが必要です)。コンテナがほぼ満杯の場合(判定には閾値と条件があります)。1人で今の容器から大きな容器に玉を全部入れていきます。正確を期すために、彼が他の容器にボールを移動するとき、他のすべての人はそれ以上ボールを追加するのをやめて、彼が終わるまで待つべきです. ボールを動かすには時間がかかるため、他のすべての人が現在のタスクを停止して、ボールを動かすのを手伝う方がよいでしょう。より効率的に設計するにはどうすればよいですか?mutex、spin_mutex、または条件変数を使用する必要がありますか? 現在、concurrent_vector を使用しているため、コンテナーの内容の変更は並行して行われます。移動手順のためにベクトル全体をロックする必要がありますか? また、TBB ミューテックスについて質問があります。再入場禁止ってどういうこと?