Vad är ett rasvillkor?
Tävlingsförhållanden har att göra med ett system eller en individuell anordning att göra multitasking. I allmänhet finns ett rasvillkor när systemet försöker bearbeta två eller flera olika operationer samtidigt, men inte kan göra det. Anledningen till felet är att operationerna inte är uppställda i rätt ordning, vilket kan leda till att systemet stängs av.
Medan många olika enheter är konfigurerade för att tillåta multitasking, finns det fortfarande en intern process som skapar en hierarki med funktioner. För att vissa funktioner ska äga rum måste andra funktioner ske i förväg. Även om slutanvändaren uppfattar att alla funktioner kan tyckas ske samtidigt, är detta inte nödvändigtvis fallet.
Ett tävlingsvillkor skapas när två eller flera operationer kämpar med varandra för att nå slutförandet före de andra operationerna. När alla de enskilda funktionerna är ordnade, leder detta till framgångsrikt utförande av alla funktioner på rätt tid. Men om sekvensen av operationer kastas ur balans skapar detta en flaskhals. I värre fall kommer racetillståndet att göra det omöjligt för systemet att fortsätta i sitt försök att bearbeta alla funktioner i den ordning som för närvarande används. Eftersom systemet kan behöva bearbeta den femte funktionen i strängen innan de första och andra funktionerna kan slutföras, måste hela strängen avbrytas och återupprättas i rätt ordning.
Ett vanligt exempel på ett rasförhållande har att göra med behandlingen av data. Om ett system får kommandon för att läsa befintliga data medan nya data skrivs, kan det leda till en konflikt som får systemet att stängas av på något sätt. Systemet kan visa någon typ av felmeddelande om mängden data som behandlas placerar en onödig belastning på tillgängliga resurser, eller om systemet helt enkelt kan stängas av. När detta händer är det vanligtvis en bra idé att starta om systemet och börja sekvensen igen. Om mängden data som bearbetas är betydande kan det vara bättre att tillåta att den nya datan blir fullbordad innan man försöker läsa någon av de för närvarande lagrade data.
Många system undviker potentialen för ett rasvillkor genom att fastställa prioriteringar i de operativa protokollen. Prioriteringarna fastställs för att fungera väl inom systemets förmågor och därmed begränsa förmågan hos ett rasförhållande att utvecklas.