Obsah

Atomická operace

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“.


Rozdíl mezi běžnou a atomickou operací

Většina příkazů ve vyšších programovacích jazycích (C++, Java, Python) není atomická, i když vypadají jednoduše.

Běžná operace (Ne-atomická):

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.

Atomická operace:

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.


Hardwarová podpora (CAS)

Atomické operace jsou implementovány přímo v instrukční sadě procesoru. Nejpoužívanější technikou je Compare-and-Swap (CAS):


Výhody a nevýhody

Výhody:

Nevýhody:


Praktické využití

Atomické operace tvoří základ pro:


Související pojmy: Thread (Vlákno), Race Condition, Mutex, Deadlock, CPU, Synchronizace.