それらがスレッドセーフであると言うとき、おそらく、何もロックすることなく複数のスレッドでそれらを使用できることを意味します。
理論的には、2 つのスレッドが存在する可能性があり、1 つは後方にプッシュし、もう 1 つは前方にプッシュします。おそらくそれでうまくいくでしょうが、実装者はイテレータがスレッドセーフになる保証がないため注意が必要です。 push_back の実装が「end」を使用し、push_front の実装が「begin」を使用した場合、そのような実装は他のスレッドによる呼び出しで無効になり、爆発する可能性があります。
std::priority_queue は、おそらくプロデューサー/コンシューマー スレッドの場合、1 つのプッシュと 1 つのポップで、2 つのスレッドで一緒に使用することはほぼ確実ではなく、最初にロックする必要があります。
std::deque に基づいてプロデューサー/コンシューマー キューを作成したときに、プロデューサーが一度に複数のアイテムをプッシュし、コンシューマーがキュー全体をスイープして処理できるようにしたことがわかりました。これは、一括挿入ごとに 1 つのロックのみを意味するため、ロックに必要な回数が減りました。