Rasvillkor
Ett kapplöpningstillstånd (även kallat kapplöpningsrisk) är ett problem med utformningen av ett system. Vid ett race condition är resultatet av en beräkning eller hela systemets beteende beroende av hur lång tid en viss beräkning tar eller när den startas. Race conditions förekommer i logiska kretsar och datorprogram, särskilt i flertrådiga eller distribuerade system.
Exempel
Det är ofta svårt att förklara vad ett tävlingstillstånd är, men metaforen hästkapplöpning kan användas som förklaring.
Ett datorprogram är som en hästkapplöpning. Datorprogrammet gör flera saker samtidigt, på samma sätt som flera hästar springer samtidigt i en hästkapplöpning. Varje häst representerar vad som brukar kallas en exekveringstråd. På så sätt kan en sådan tråd hantera nätverkskommunikation, en annan kan ansvara för att rita om användargränssnittet. När det gäller ett tävlingsvillkor fungerar programmet korrekt om en viss häst vinner loppet. Till exempel kan programmet fungera om häst nummer fem vinner, men det kraschar om någon annan häst vinner loppet. En lösning på problemet är att använda synkronisering. Detta är som att flera jockeys slår sig ihop för att se till att häst nummer fem ligger före.
På olika datorer eller i olika situationer kan datorprogrammen köras i olika hastigheter. Ibland är de snabbare, ibland långsammare. Detta kan innebära att på vissa system kommer kapplöpningstillståndet aldrig att visa sig, även om det kan vara lätt att visa det på andra. Race conditions kan vara svåra att hitta. Fel som orsakas av kapplöpningstillstånd är en vanlig källa till frustration inom programvaruutveckling.