Una race condition è una condizione in cui il comportamento di un programma dipende dall’ordine o dal timing di esecuzione di più thread o processi concorrenti, portando a risultati imprevedibili o errati.
- si verifica quando due o più processi/thread accedono simultaneamente a una risorsa condivisa senza un corretto meccanismo di sincronizzazione;
- il risultato finale può cambiare di volta in volta in base all’ordine di accesso;
- può provocare corruzione dei dati, risultati incoerenti o comportamenti anomali;
- è tipicamente prevenuta tramite lock, semafori, mutex o altre primitive di sincronizzazione;
- non blocca il sistema come un deadlock, ma compromette la correttezza dei dati o del programma.