1

私は、C++ で stl キューに同時追加すると問題が発生する可能性があることを知っています。これを解決する方法は、すべての追加/削除呼び出しにミューテックス ロックを追加することです。

しかし、私は現在 Java でプログラミングしており、BlockingQueue を使用しています。ドキュメントには、BlockingQueue オブジェクトでプット/テイクを呼び出すスレッドは、それぞれプット/テイクする余地ができるまで暗黙的にブロックされるとのみ記載されています。ただし、同時の put/take 呼び出しについては何も言及されていません。これらをミューテックスロックで保護する必要がありますか?

4

2 に答える 2

1

いいえ、ブロッキング キューはスレッド セーフです。ドキュメントから:

BlockingQueue の実装はスレッドセーフです。すべてのキューイング メソッドは、内部ロックまたはその他の形式の同時実行制御を使用して、アトミックに効果を達成します。

于 2011-07-25T06:03:55.120 に答える
1

ドキュメントから:

BlockingQueue の実装はスレッドセーフです。

したがって、ロックは必要ありません。

于 2011-07-25T06:04:15.653 に答える