Задать вопрос
piromanlynx
@piromanlynx
Системный администратор в Perfect Solutions

STL queue — потокобезопасен при push/pop?

Если в одном потоке выполнять push() нового элемента, а в другом
if (!queue.empty()){
  element = queue.first();
  queue.pop();
}

требуется ли использовать mutex или можно спокойно делать push/pop без mutex?
  • Вопрос задан
  • 2374 просмотра
Подписаться 2 Оценить Комментировать
Решения вопроса 1
@DancingOnWater
Все контейнеры STL не потокобезопасны, если это не оговорено отдельно. Причина проста - неизбежная потеря производительности в случаях, когда потокобезопасность не нужна.

Помните С++ сделан ради свободы выбора средств разработчику. От этого и отталкивайтесь.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
AxisPod
@AxisPod
Нет конечно, если необходимы, можете посмотреть на boost::lockfree или Intel TBB. Ну либо сами закрывайте.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы