É 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 respostasEu 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?