Can num++ be atomic for 'int num'
Em geral, paraint num
, num++
(ou++num
), como uma operação de leitura-modificação-gravação, énot atomic. Mas muitas vezes vejo compiladores, por exemplo GCC, gere o seguinte código para ele try here):
Desde a linha 5, que corresponde anum++
é uma instrução, podemos concluir quenum++
is atomic nesse caso
E se, significa que @ assim geranum++
pode ser usado em cenários simultâneos (multiencadeados) sem qualquer risco de corrida de dados (ou seja, não precisamos fazê-lo, por exemplo,std::atomic<int>
e imponha os custos associados, pois é atômico)?
ATUALIZA
Observe que esta pergunta énã se incremento atômica (não é e foi e é a linha de abertura da pergunta). É sepod em cenários específicos, isto é, se a natureza de uma instrução pode, em certos casos, ser explorada para evitar a sobrecarga dolock
prefixo. E, como a resposta aceita menciona na seção sobre máquinas sem processador, bem comoesta resposta, a conversa em seus comentários e outros explicam,pod (embora não com C ou C ++