atomicidad como concepto se produce en varios lugares, sospecho que usted está pensando acerca de las operaciones atómicas en el código, pero hay otros significados.
Una propiedad fundamantal de una transacción de base de datos es atomicidad, ver una descripción de ACID propiedades de transacciones.
En este caso, usted tiene mucha inteligencia de base de datos, bloqueos y demás, lo que casi con seguridad implica esperar cuando dos hilos de control (o dos procesos) desean obtener los mismos datos.
Al llegar a las líneas de código que supongo que está pensando en una declaración (en algún lenguaje ficticio)
global int x = 7;
en un único hilo
x = 25000;
print x;
y en otro
print x;
¿Podemos decir algo sobre lo que se imprimirá el segundo hilo? Podríamos aceptar 7 o 25000, estaríamos menos contentos de obtener un número que fuera el byte de orden superior de 25,000 y un byte de orden inferior de 7, que conceptualmente sería el resultado de una asignación de enteros no atómicos.
Diferentes lenguajes de programación son libres de definir cualquier semántica que deseen, es concebible que algunos simplemente acepten cualquier comportamiento natural en el que trabajen (digamos 32 bit int fue atómico, 64 long no) o podrían hacer algo mucho más inteligente, y si la CPU en sí no proporciona operaciones atómicas, entonces no veo mucha alternativa a algún tipo de espera si quieren fingir atomicidad, por ej. Palabra clave sincronizada de Java
¿Qué lenguaje de programación? ¿Qué plataforma? ¿Qué operación atómica? ¿Qué nivel de atomicidad (sistema de archivos, red, base de datos, ...)? –
@Matt Ball: ¿eso importa? (actualizó la pregunta) – Pindatjuh