É possível usar std :: deque :: push_back () e std :: deque :: front () / std :: deque :: pop_front () em threads diferentes sem sincronização? [duplicado]

Esta pergunta já tem uma resposta aqui:

O uso de std :: deque ou std :: priority_queue é seguro para threads? [duplicado] 3 respostasSegurança de segmento para a fila STL 5 respostas

Eu tenho uma situação de produtor / consumidor com um único produtor e um único consumidor, compartilhando um std :: deque comum.

Deixe-me escrever um código:

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();
}

Considere consumidor () e produtor () sendo executados em threads independentes. Esse código precisa de sincronização?

questionAnswers(2)

yourAnswerToTheQuestion