Definice a význam Race Condition

Co je Race Condition?

K podmínce závodu dochází, když správné fungování softwarového programu závisí na načasování jednoho nebo více procesů. Pokud se vlákno spustí nebo ukončí v neočekávaném čase, může to způsobit nepředvídatelné chování, například nesprávný výstup nebo zablokování programu.

Většina softwarových programů je multithreaded, což znamená, že mohou zpracovávat několik vláken najednou. Dobře naprogramovaná aplikace zajistí, že výsledky jednotlivých vláken budou zpracovány v očekávaném pořadí. Pokud program spoléhá na vlákna, která běží v nepředvídatelném pořadí, může dojít k závodní podmínce.

Jednoduchým příkladem je logické hradlo, které zpracovává booleovské hodnoty. Logické hradlo AND má dva vstupy a jeden výstup. Pokud jsou vstupy A a B pravdivé, dává hradlo AND výsledek TRUE. Pokud je jeden nebo oba vstupy nepravdivé, produkuje FALSE. K závodní podmínce může dojít, pokud program kontroluje výsledek logického hradla před načtením proměnných A a B. Správný postup by byl:

* Načtení proměnné A
* Načtení proměnné B
* Kontrola výsledku logického hradla AND

Nesprávný postup by byl:

* Načtení proměnné A
* Kontrola výsledku logického hradla AND
* Načtení proměnné B

Výsledek druhého příkladu výše může, ale nemusí být stejný jako u prvního příkladu. Například proměnná B může být před i po načtení FALSE, což by výsledek nezměnilo. Pokud je A FALSE, nezáleží na tom, zda je B TRUE nebo FALSE. Pokud jsou však A i B pravdivé, výsledek by měl být TRUE. Načtení proměnné B po kontrole výsledku logického hradla by vedlo k nesprávnému výsledku FALSE.

Nekonzistentní výstup, který vzniká v důsledku závodních podmínek, může způsobit chyby, které se obtížně odhalují. Programátoři se mohou těmto problémům vyhnout tím, že zajistí, aby byla vlákna zpracovávána v konzistentním pořadí.

Definice Race Condition na této stránce je původní definice na SharTec.eu. Pokud chcete na tuto stránku odkázat, nezapomeňte uvést zdroj článku.

Cílem webu SharTec.eu je srozumitelně vysvětlit počítačovou terminologii. Snažíme se o jednoduchost a přesnost každé definice, kterou zveřejňujeme. Pokud máte připomínky k definici jazyka Stav závodu nebo chcete navrhnout nový technický termín, kontaktujte nás.

Cieľom stránky SharTec.eu je vysvetľovať počítačovú terminológiu zrozumiteľným spôsobom. Pri každej uverejnenej definícii sa snažíme o jednoduchosť a presnosť. Ak máte pripomienky k definícii jazyka Stav závodu alebo chcete navrhnúť nový technický termín, kontaktujte nás.