Glenn Hughes a en grande partie cloué cette question.
"Atomique" en programmation vient de l'idée philosophique des Grecs anciens des choses qui sont si élémentaires qu'elles ne peuvent pas être divisées davantage. Ironiquement, la physique nucléaire a montré que les atomes peuvent être divisés, mais nous pouvons toujours apprécier l'idée de base.
En informatique, l'idée d'une opération atomique fait référence à une opération qui se produit complètement ou pas du tout, du moins en ce qui concerne tout observateur extérieur. Si nous avions l'atomicité dans la vie réelle, vous pourriez voir un terrain vide dans votre quartier, et dans la seconde suivante, vous verriez une maison complète et terminée se dresser là.
Ceci est important et utile en informatique. Parfois, ce serait une catastrophe si vous pouviez observer une opération se déroulant par phases, petit à petit. L'exemple classique est un transfert électronique de fonds. Si je dis à ma banque de vous envoyer 100 dollars, l'ordinateur de la banque déduit 100 dollars de mon compte et les crédite sur le vôtre. Si l'ordinateur tombe en panne en plein milieu de l'opération, vous pouvez vous retrouver avec 100 dollars supplémentaires alors que je les ai toujours. Les gens pourraient commencer à planter les ordinateurs intentionnellement. Ce ne serait pas bon pour les banques ! Ou disons que je n'ai que 100 dollars ; l'ordinateur de ma banque pourrait vous créditer les 100 dollars, mais pendant ce temps, je retire rapidement 100 dollars via un distributeur automatique parce que la banque n'est pas consciente que mon compte a été ponctionné ailleurs.
Il n'y a pas de magie en informatique pour que toutes les parties d'un programme informatique soient parfaitement cohérentes à tout moment. Mais l'implémentation technique de nombreux langages et systèmes de programmation fournit des mécanismes qui permettent au moins d'y ressembler, afin que les différentes parties d'un système ne se corrompent pas mutuellement avec des combinaisons de valeurs de données qui n'ont pas de sens. Souvent, mais pas toujours, cela se fait en s'assurant que certaines valeurs ou groupes de valeurs ne peuvent être accédés que par un seul morceau de code à un moment donné.
.