Hvad er en racetilstand?
Racebetingelser har at gøre med forsøg fra et system eller individuel enhed til at deltage i multitasking. Generelt findes der en racetilstand, når systemet forsøger at behandle to eller flere forskellige operationer samtidig, men ikke er i stand til det. Årsagen til fejlen er, at operationerne ikke er indrettet i den rigtige rækkefølge, en situation kan føre til, at systemet lukker ned.
Mens mange forskellige enheder er konfigureret til at tillade multitasking, er der stadig en intern proces, der skaber et hierarki af funktioner. For at visse funktioner skal finde sted, skal andre funktioner forekomme på forhånd. Mens slutbrugeren opfatter, at alle funktioner kan synes at finde sted på samme tid, er dette ikke nødvendigvis tilfældet.
En racetilstand oprettes, når to eller flere operationer kæmper med hinanden for at nå færdiggørelsen foran de andre operationer. Når alle de individuelle funktioner er ordentligt arrangeret, fører dette til en vellykket udførelse af alle funktionerne rettidigt. Men hvis sekvensen af operationer kastes ud af balance, skaber dette en flaskehals. I værre tilfælde vil racetilstanden gøre det umuligt for systemet at fortsætte i sit forsøg på at behandle alle funktioner i den rækkefølge, der i øjeblikket er i brug. Da systemet muligvis skal behandle den femte funktion i strengen, før den første og den anden funktion kan afsluttes, skal hele strengen afbrydes og genindføres i den rigtige rækkefølge.
Et almindeligt eksempel på en race-tilstand har at gøre med behandlingen af data. Hvis et system modtager kommandoer til at læse eksisterende data, mens der skrives nye data, kan dette føre til en konflikt, der får systemet til at lukke ned på en eller anden måde. Systemet viser muligvis en eller anden type fejlmeddelelse, hvis mængden af data, der behandles, placerer en unødig belastning på de tilgængelige ressourcer, eller systemet muligvis bare lukker ned. Når dette sker, er det normalt en god ide at genstarte systemet og begynde sekvensen igen. Hvis mængden af data, der behandles, er betydelig, kan det være bedre at tillade, at assimileringen af de nye data afsluttes, før man forsøger at læse nogen af de aktuelt lagrede data.
Mange systemer undgår potentialet for en racetilstand ved at opstille prioriteter i de operationelle protokoller. Prioriteterne er fastlagt for at fungere godt inden for systemets evner og således begrænse evnen til en race-tilstand til at udvikle sig.