TLDR; "Ciò significa che i metodi statici sono intrinsecamente thread-safe?" La risposta è No. Le classi con la nota sopra avranno metodi thread-safe statici perché gli ingegneri Microsoft hanno scritto il codice in modo thread-safe, magari usando i lock o altri meccanismi di sincronizzazione dei thread " (citazione tratta da http://odetocode.com/Articles/314.aspx)
Maggiori dettagli
cosa si tratta? Niente, tranne il codice scritto per quella particolare classe.
L'istruzione è una dichiarazione che indica che i programmatori che hanno scritto la classe si sono accertati che tutti i membri statici (metodi e proprietà) siano thread-safe (ma non lo hanno fatto ad esempio per i membri).
L'ho fatto in modo che le statiche siano thread-safe perché, essendo statiche, è molto probabile che vengano richiamate da più thread, quindi inseriscono il lavoro extra necessario per assicurarsi che tutto ciò sia a posto. Spesso i metodi statici sono anche funzioni stateless, il che significa che sono già generalmente thread-safe (non è necessario alcun lavoro aggiuntivo).
Al contrario, per esempio i membri della dichiarazione sono semplicemente loro che ti dicono che non sono stati così attenti con loro.
Spesso le istanze vengono create da un singolo thread e sono accessibili solo da quel thread; se l'istanza non è mai accessibile da più thread, la sicurezza del thread non è un problema, quindi i programmatori non si sono preoccupati di aggiungerlo.
L'istruzione non è un'asserzione relativa a proprietà intrinseche dell'istanza statica vs; entrambi possono essere non sicuri a meno che non si inserisca un codice specifico per garantire che più thread possano accedervi senza problemi (o se, per loro natura, sono già thread-safe, ad esempio una funzione stateless).
È semplicemente una dichiarazione che i programmatori che hanno scritto quelle classi hanno fatto in modo che i membri statici siano sicuri, ma non lo hanno fatto ad esempio per i membri.
fonte
2017-06-03 13:30:14
La parte tra parentesi è ciò che causa confusione durante la lettura, ma piuttosto come: statico pubblico * membri * di questo tipo sono thread-safe. Ciò significa che i membri statici di questo tipo di oggetto sono protetti da thread, non si riferiscono a un "tipo statico pubblico"; istanza dichiarata nel tuo codice. –