Ci sono molti articoli e discussioni che spiegano perché è bene costruire classi thread-safe. Si dice che se più thread accedono, ad es. un campo allo stesso tempo, ci possono essere solo alcune conseguenze negative. Quindi, qual è il motivo per mantenere il codice thread-safe non? Mi sto concentrando principalmente su .NET, ma credo che i motivi principali non dipendano dalla lingua.A cosa serve la sicurezza senza thread?
E.g. I campi statici .NET non sono thread-safe. Quale sarebbe il risultato se erano thread-safe per impostazione predefinita? (senza necessità di eseguire il blocco "manuale"). Quali sono i vantaggi dell'utilizzo (in realtà predefinito a) della sicurezza senza thread?
Una cosa che mi viene in mente è la performance (più di un'ipotesi, però). È piuttosto intuitivo che, quando una funzione o un campo non ha bisogno di essere thread-safe, non dovrebbe esserlo. Tuttavia, la domanda è: per cosa? La sicurezza del thread è solo una quantità aggiuntiva di codice che devi sempre implementare? In quali scenari posso essere sicuro al 100% che ad es. un campo non verrà utilizzato da due thread contemporaneamente?
Ma quando puoi dire che una DLL non userà mai il threading? E i clienti, che vorrebbero sperimentare con la tua libreria? Si dovrebbe rendere tutti i metodi pubblici thread-safe? Per quanto riguarda il furgone: alcune persone amano vantarsi. :) – pbalaga
@rook: ricorda, se è una buona libreria non ti importa di come implementa le cose: non dovrebbe mai darti accesso a cose che sono poco sicure a meno che non le segnali molto attentamente per te. – Crisfole
@rook: per quanto riguarda i client che fanno esperimenti con la loro libreria, a meno che non documenta esplicitamente che un metodo è thread-safe, è sicuro che non lo sia. I clienti si assumono la responsabilità di mantenere la sicurezza del thread durante l'utilizzo delle lezioni. – Juliet