È questo un modo thread-safe per inizializzare un [ThreadStatic]?
-
23-08-2019 - |
Domanda
[ThreadStatic] private static Foo _foo; public static Foo CurrentFoo { get { if (_foo == null) { _foo = new Foo(); } return _foo; } }
è il filo precedente codice di sicurezza? O abbiamo bisogno di bloccare il metodo?
Soluzione
Se la sua ThreadStatic c'è una copia per thread. Quindi, per definizione, la sua thread-safe.
Altri suggerimenti
Un [ThreadStatic]
è compilatore / magia lingua per la memorizzazione locale thread. In altre parole, è destinato alla filettatura, quindi, anche se esiste un contesto interruttore non importa perché nessun altro thread può accedere direttamente.
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow