Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

Diskuze: Atomická operace

Aktivity
Avatar
coells
Tvůrce
Avatar
Odpovídá na Neaktivní uživatel
coells:16.8.2014 16:32

Co je to atomický kód? Takový výraz slyším prvně. Jestli ten učitel nakonec nemá pravdu ^^

 
Odpovědět
16.8.2014 16:32
Avatar
GiXi
Člen
Avatar
Odpovídá na coells
GiXi:16.8.2014 16:50
Atomicita neboli nedělitelnost je důležitá vlastnost v programování. Znamená, že daná činnost (operace) se provede najednou, nemůže být přerušena něčím jiným a později dokončena.

Wikipedia

Editováno 16.8.2014 16:50
Nahoru Odpovědět
16.8.2014 16:50
‘I am the one who knocks.’ Heisenberg
Avatar
coells
Tvůrce
Avatar
Odpovídá na GiXi
coells:16.8.2014 16:55

To není tak úplně pravda, ale jsi blízko. Nicméně to mluvíš o operaci. Operace zpravidla funguje v rámci dobře definovaného kontextu, kde lze atomicitu zadefinovat. Já se ptal na atomický kód, to jsem ještě neslyšel.

 
Nahoru Odpovědět
16.8.2014 16:55
Avatar
Odpovídá na coells
Neaktivní uživatel:16.8.2014 17:49

Otázka v písemce zněla přesně "Co je to atomický kód". My jsme našli přesně to co GiXi, jenže v testu byla vyžadována odpověd přesně opačná. Do té (i od té) doby jsem o atomickém kódu neslyšel :D

Nahoru Odpovědět
16.8.2014 17:49
Neaktivní uživatelský účet
Avatar
coells
Tvůrce
Avatar
Odpovídá na Neaktivní uživatel
coells:16.8.2014 18:44

Atomic code aneb atomový kód aneb atomové číslo označuje počet protonů v jádru atomu.

V programování se mluví o atomické operaci. Definice, kterou GiXi napsal, není správně z jednoduchého důvodu. Atomickou operaci lze přerušit, dokonce ji lze i zrušit. Takové chování nejen, že může nastat, ale běžně nastává například během transakčního zpracování databázových dotazů.

Text na české wikipedii je špatně. Pokud se podíváš na anglický originál, najdeš správnou definici: Atomicity is a guarantee of isolation from concurrent processes.

Důležitou vlastností atomické operace a základem definice je, že se atomická operace "zvenku" chová jednolitě, izolovaně. Vnější pozorovatel nebo účastník procesu nesmí vidět jednotlivé kroky operace, protože ta se chová, jako by byla provedena v jediném kroku. Operace se tak vždy provede buď celá nebo vůbec.

Důsledkem izolace je, že jakákoliv práce s vnějšími zdroji vede také k izolaci těchto zdrojů. Způsobů, jak izolovat operaci je více, ale obvykle je potřeba podpora v platformě nebo OS a většinou i přímo v CPU.

Také je nutné si uvědomit, že všechny termíny používáme pouze v kontextu operace. Ačkoliv se bude operace jevit atomická například pro souběžná vlákna v rámci procesu, pozorovatel mimo kontext může vidět jednotlivé kroky operace.

 
Nahoru Odpovědět
16.8.2014 18:44
Avatar
Odpovídá na coells
Neaktivní uživatel:16.8.2014 20:15

Wau, dobrý. Asi mi ještě chvilku dá, než to pochopím, ale každopádně děkuji ;)

Nahoru Odpovědět
16.8.2014 20:15
Neaktivní uživatelský účet
Avatar
coells
Tvůrce
Avatar
Odpovídá na Neaktivní uživatel
coells:16.8.2014 20:56

Zamysli se nad tímhle příkladem:

int atomic_function(int a, int b)
{
  return a + b;
}
int a, b;
int nonatomic_function()
{
  return a + b;
}

Proč je první verze funkce atomická, zatímco druhá není?

 
Nahoru Odpovědět
16.8.2014 20:56
Avatar
Odpovídá na coells
Neaktivní uživatel:16.8.2014 21:10

Ta první je izolovaná

Nahoru Odpovědět
16.8.2014 21:10
Neaktivní uživatelský účet
Avatar
coells
Tvůrce
Avatar
Odpovídá na Neaktivní uživatel
coells:16.8.2014 21:16

:-) Výborně!

Hodnoty proměnných se v prvním případě zkopírují na zásobník, který spadá do lokálního kontextu vlákna - v paměťovém prostoru, který je izolovaný od ostatních vláken. Pokud by zásobník funkce nebyl izolovaný, funkce by nebyla atomická.

Tím pádem jsi pochopil celý můj výklad i atomicitu operací.

 
Nahoru Odpovědět
16.8.2014 21:16
Avatar
Odpovídá na coells
Neaktivní uživatel:16.8.2014 21:18

Paráda, děkuji :)

Nahoru Odpovědět
16.8.2014 21:18
Neaktivní uživatelský účet
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 10 zpráv z 10.