Što je uvjet utrke?

Uvjeti utrke povezani su s pokušajima sustava ili pojedinačnog uređaja da se uključi u više zadataka. Općenito, uvjet utrke postoji kada sustav pokušava obraditi dvije ili više različitih operacija istovremeno, ali to ne može učiniti. Razlog kvara je što operacije nisu poredane u ispravnom slijedu, okolnost može dovesti do gašenja sustava.

Iako je mnogo različitih uređaja konfigurirano da dopušta obavljanje više zadataka, još uvijek postoji interni proces koji stvara hijerarhiju funkcija. Da bi se određene funkcije mogle odvijati, druge se funkcije moraju dogoditi unaprijed. Iako krajnji korisnik shvaća da se sve funkcije mogu činiti da se odvijaju u isto vrijeme, to nije nužno slučaj.

Uvjet utrke nastaje kada se dvije ili više operacija natječu jedna s drugom kako bi došle do završetka prije ostalih operacija. Kada su sve pojedinačne funkcije pravilno raspoređene, to dovodi do uspješnog izvršavanja svih funkcija na vrijeme. Međutim, ako je slijed operacija izbačen iz ravnoteže, to stvara usko grlo. U najgorem slučaju, uvjet utrke onemogućit će sustavu da nastavi s pokušajem obrade svih funkcija trenutno angažiranim redoslijedom. Budući da će sustav možda morati obraditi petu funkciju u nizu prije nego što se prva i druga funkcija mogu dovršiti, cijeli niz mora biti prekinut i ponovno uspostavljen pravilnim redoslijedom.

Jedan uobičajen primjer stanja utrke ima veze s obradom podataka. Ako sustav primi naredbe za čitanje postojećih podataka tijekom pisanja novih podataka, to može dovesti do sukoba koji uzrokuje da se sustav na neki način isključi. Sustav može prikazati neku vrstu poruke o pogrešci ako količina podataka koji se obrađuju nepotrebno opterećuje dostupne resurse ili se sustav jednostavno može isključiti. Kada se to dogodi, obično je dobra ideja ponovno pokrenuti sustav i ponovno započeti slijed. Ako je količina podataka koji se obrađuju znatna, možda bi bilo bolje dopustiti da se asimilacija novih podataka završi prije pokušaja čitanja bilo kojeg od trenutno pohranjenih podataka.

Mnogi sustavi izbjegavaju mogućnost uvjeta utrke postavljanjem prioriteta u operativnim protokolima. Prioriteti su uspostavljeni kako bi dobro funkcionirali unutar mogućnosti sustava i tako ograničili sposobnost razvoja stanja utrke.