あるスレッドによってプッシュされ、別のスレッドによってポップされた( std::)queue / (std::)dequeがあります。キューを変更しているため、プッシュ関数とポップ関数でミューテックスをロックする必要があることはわかっていますが、front() にアクセスする場合もミューテックスをロックする必要がありますか?
私が尋ねている理由は、キューが内部でどのように編成されているかよくわからないからです。必要なときに割り当て/削除していることを読んだことがあります。他のスレッドがプッシュしている間にフロントを読んだら、フロントが移動する可能性はありますか?
イテレータはどうですか?イテレータが値を読み取っている間、ミューテックスもロックする必要がありますか?
読み取り中にミューテックスをロックすることは常に良い考えだと思いますが、すべてのイテレータ/フロントアクセスで queue.mutex 全体をロックする必要があるかどうかはわかりません。毎回ロックすると、プログラム全体が遅くなる可能性があります。