Cosa succederà se due thread leggono questa proprietà allo stesso tempo?Caricamento lento senza blocchi nell'applicazione multithread
public static HugeType HugeType
{
get
{
if (tenderCache == null)
{
tenderCache = Config.Get<HugeType>("HugeType", null);
}
return tenderCache;
}
}
Il mio scopo è di sola lettura e non è fondamentale se si creano due istanze. Dovrei aggiungere serrature in ogni caso?
Si noti che nei modelli di memoria più deboli rispetto al modello .NET, è possibile che altri thread vedano un riferimento 'tenderCache' non nullo, ma l'oggetto a cui fa riferimento non è ancora completamente costruito. Ad esempio questo è sicuramente un data race in C++. –
'Config.Get (" HugeType ", null)' può essere richiamato più di una volta e l'ultimo thread vince. Se ciò non ti fa male, non hai bisogno di un lucchetto. –
Vorrei suggerire la domanda [this] (http://stackoverflow.com/questions/6847721/when-should-i-use-lazyt). Lazy è quello che vuoi qui. –