Attualmente sto leggendo l'e-book Threading in C# di Joe Albahari e, a volte nel suo codice di esempio, utilizza i blocchi in luoghi in cui non vedo alcun problema di sicurezza dei thread. Here, ad esempio, si blocca attorno alla scrittura e alla lettura dal campo _status, che si riferisce a un oggetto immutabile.Perché qui vengono utilizzati i lucchetti?
Capisco che se la classe ProgressStatus erano mutabili, si avrebbe bisogno di chiudere intorno lettura e la scrittura ad esso, perché se un thread fosse pre svuotato tra l'aggiornamento dei campi percentComplete e StatusMessage da un altro thread la lettura del stato, il secondo thread potrebbe ottenere una coppia di valori non valida per quei campi. (Completamento al 100%/"Operazione in corso ...")
Ma poiché ProgressStatus è immutabile, non può verificarsi uno stato non valido. Se Joe ha rimosso entrambi i blocchi, quale problema di sicurezza dei thread potrebbe verificarsi?
Grazie - Ho il sospetto che un campo volatile potrebbe fare il trucco. "' volatile' ha anche i suoi problemi "- puoi per favore elaborare? – dgmulf