Vai al contenuto

Race condition

Un risultato errato dipende dall’ordine temporale di accessi sovrapposti.

Architettura software

Che cos’è una race condition?

Una race condition si verifica quando un risultato dipende impropriamente dall’ordine temporale di flussi concorrenti. Più operazioni accedono spesso a stato condiviso senza coordinamento adatto. Non devono necessariamente eseguirsi insieme su nuclei diversi. Anche accessi intercalati possono creare un ordine inadeguato.

In un portale inventato, due richieste di prenotazione verificano lo stesso ultimo articolo disponibile. Entrambe vedono inizialmente disponibilità e potrebbero annunciare successo senza protezione adatta. Verifica e prenotazione vanno quindi protette insieme perché una sola richiesta possa prenotare l’ultimo articolo; solo il risultato determina il riscontro. Aprire una transazione non dimostra da solo che il conflitto sia impedito. Il team controlla specificamente flussi sovrapposti e protezione usata.

Fonti