Atomická operace je operace, která nemůže být v průběhu svého vykonávání přerušena žádnou jinou událostí nebo vláknem. Zatímco běžné operace se na úrovni procesoru rozkládají na více kroků (čtení, úprava, zápis), atomická operace proběhne „v jednom kuse“.
Většina příkazů ve vyšších programovacích jazycích (C++, Java, Python) není atomická, i když vypadají jednoduše.
Představte si příkaz i++ (přičtení jedničky). Procesor musí:
1. Načíst hodnotu ''i'' z paměti do registru. 2. Přičíst 1 k hodnotě v registru. 3. Zapsat novou hodnotu z registru zpět do paměti.
Pokud je procesor uprostřed těchto kroků přerušen jiným vláknem, dojde k chybě souběhu.
Všechny tři kroky výše se spojí do jedné nedělitelné instrukce. Žádné jiné vlákno se nemůže „vmezeřit“ mezi načtení a zápis.
Atomické operace jsou implementovány přímo v instrukční sadě procesoru. Nejpoužívanější technikou je Compare-and-Swap (CAS):
Výhody:
Nevýhody:
Atomické operace tvoří základ pro:
Související pojmy: Thread (Vlákno), Race Condition, Mutex, Deadlock, CPU, Synchronizace.