Condițiile de cursă au de-a face cu încercările unui sistem sau dispozitiv individual de a se angaja în multitasking. În general, o condiție de concurență există atunci când sistemul încearcă să proceseze două sau mai multe operațiuni diferite simultan, dar nu poate face acest lucru. Motivul eșecului este că operațiunile nu sunt aliniate în ordinea corectă, o circumstanță poate duce la oprirea sistemului.
În timp ce multe dispozitive diferite sunt configurate pentru a permite multitasking, există totuși un proces intern care creează o ierarhie de funcții. Pentru ca anumite funcții să aibă loc, alte funcții trebuie să apară în prealabil. În timp ce utilizatorul final percepe că toate funcțiile pot părea că au loc în același timp, acesta nu este neapărat cazul.
O condiție de cursă este creată atunci când două sau mai multe operațiuni se luptă între ele pentru a ajunge la finalizare înaintea celorlalte operațiuni. Când toate funcțiile individuale sunt aranjate corespunzător, aceasta duce la executarea cu succes a tuturor funcțiilor în timp util. Cu toate acestea, dacă succesiunea operațiunilor este aruncată în dezechilibru, acest lucru creează un blocaj. În cel mai rău caz, condiția de cursă va face imposibil ca sistemul să continue în încercarea de a procesa toate funcțiile în ordinea activată în prezent. Deoarece este posibil ca sistemul să fie nevoie să proceseze a cincea funcție din șir înainte ca prima și a doua funcție să poată fi finalizată, întregul șir trebuie să fie anulat și restabilit în ordinea corectă.
Un exemplu comun de condiție de cursă are de-a face cu procesarea datelor. Dacă un sistem primește comenzi pentru a citi datele existente în timp ce scrie date noi, acest lucru poate duce la un conflict care duce la închiderea sistemului într-un fel. Sistemul poate afișa un anumit tip de mesaj de eroare dacă cantitatea de date procesată a pus o presiune excesivă asupra resurselor disponibile sau sistemul se poate opri pur și simplu. Când se întâmplă acest lucru, este de obicei o idee bună să reporniți sistemul și să începeți din nou secvența. Dacă cantitatea de date procesate este considerabilă, poate fi mai bine să se permită finalizarea asimilării noilor date înainte de a încerca să citească oricare dintre datele stocate în prezent.
Multe sisteme evită potențialul unei condiții de cursă prin stabilirea priorităților în protocoalele operaționale. Prioritățile sunt stabilite pentru a funcționa bine în limitele capacităților sistemului și astfel să limiteze capacitatea unei condiții de cursă de a se dezvolta.