Можно ли использовать std :: deque :: push_back () и std :: deque :: front () / std :: deque :: pop_front () в разных потоках без синхронизации? [Дубликат]
На этот вопрос уже есть ответ здесь:
Использует ли std :: deque или std :: priority_queue поточно-безопасный? [Дубликат] 3 ответаПотокобезопасность для очереди STL 5 ответовУ меня есть ситуация производитель / потребитель с одним производителем и одним потребителем, у которых общий std :: deque.
Позвольте мне написать код:
deque<int> dq;
void producer()
{
for (int i = 0; i < N; i++)
dq.push_back(i);
// signal data
}
void consumer()
{
// get signal
int n = dq.front();
dq.pop_front();
}
Рассмотрим, как customer () и seller () выполняются в независимых потоках. Этот код нуждается в синхронизации?