Race Condition

Una race condition si verifica quando un programma software dipende dalla temporizzazione di uno o più processi per funzionare correttamente. Se un thread viene eseguito o termina in un momento imprevisto, può causare un comportamento imprevedibile, come un output errato o un deadlock del programma.

La maggior parte dei programmi software è multithread, ovvero può elaborare più thread contemporaneamente. Un'applicazione ben programmata garantisce che i risultati di ogni thread vengano elaborati nell'ordine previsto. Se un programma dipende da thread eseguiti in una sequenza imprevedibile, può verificarsi una race condition.

Un esempio semplice è un circuito logico che gestisce valori booleani. Il circuito logico AND ha due ingressi e un output. Se gli ingressi A e B sono true, il circuito AND produce TRUE. Se uno o entrambi gli ingressi sono false, produce FALSE. Una race condition può verificarsi se un programma controlla il risultato del circuito logico prima che le variabili A e B siano caricate. Il processo corretto sarebbe:

  1. Caricare la variabile A
  2. Caricare la variabile B
  3. Controllare il risultato del circuito logico AND

Una sequenza errata sarebbe:

  1. Caricare la variabile A
  2. Controllare il risultato del circuito logico AND
  3. Caricare la variabile B

Il risultato del secondo esempio precedente potrebbe essere uguale o diverso da quello del primo esempio. Per esempio, la variabile B potrebbe essere FALSE prima e dopo essere stata caricata, quindi il risultato non cambierebbe. Se A è FALSE, non importa se B è TRUE o FALSE. Tuttavia, se sia A sia B sono true, il risultato dovrebbe essere TRUE. Caricare la variabile B dopo aver controllato il risultato del circuito logico produrrebbe un risultato errato, FALSE.

L'output incoerente prodotto dalle race condition può causare bug difficili da rilevare. I programmatori possono evitare questi problemi assicurandosi che i thread vengano elaborati in una sequenza coerente.

Aggiornato January 24, 2020 da Per C.

quizMetti alla prova le tue conoscenze

What is the full name of the Unix shell known as "bash?"

A
Bourne-Again Shell
0%
B
BASIC-Advanced Shell
0%
C
Binary-Adaptive Shell
0%
D
Bit-Addressed Shell
0%
Correct! Incorrect!     View the Bash definition.
More Quizzes →

Il dizionario informatico Tech Terms

La definizione di Race Condition in questa pagina è una definizione originale scritta dagli autori di TechTerms.com. Se desideri fare riferimento a questa pagina o citare questa definizione, utilizza la barra di citazione verde direttamente sotto la definizione.

Il nostro obiettivo è spiegare la terminologia informatica in modo semplice e comprensibile. Ci impegniamo per l'accuratezza e la semplicità in ogni definizione pubblicata. Se hai commenti o vuoi suggerire un nuovo termine tecnico, contattaci.

La newsletter di Tech Terms

Migliora le tue conoscenze tecniche con la nostra newsletter giornaliera o settimanale! Iscriviti oggi e ricevi nuovi termini e quiz nella tua casella di posta.

Iscriviti alla newsletter gratuita di TechTerms

Con quale frequenza desideri ricevere un'e-mail?

Puoi annullare l'iscrizione o modificare la frequenza in qualsiasi momento tramite i link presenti in ogni e-mail. Domande? Contattaci.

Nota: La newsletter viene inviata in inglese.