Esistono regole / linee guida generali per ciò che rende un metodo thread-safe? Capisco che ci sono probabilmente un milione di situazioni una tantum, ma che dire in generale? È così semplice?
- Se un metodo accede solo alle variabili locali, è thread-safe.
È così? Questo vale anche per i metodi statici?
Una risposta, fornita da @Cybis, è stata:
Le variabili locali non possono essere condivise tra i thread poiché ogni thread ottiene il proprio stack.
È il caso anche dei metodi statici?
Se un metodo viene passato a un oggetto di riferimento, ciò rompe la sicurezza del thread? Ho fatto alcune ricerche e ci sono molte cose su alcuni casi, ma speravo di essere in grado di definire, usando solo alcune regole, le linee guida da seguire per assicurarsi che un metodo sia sicuro per i thread.
Quindi, immagino che la mia ultima domanda sia: "Esiste un breve elenco di regole che definiscono un metodo thread-safe? In caso affermativo, quali sono?"
MODIFICA
Molti punti positivi sono stati fatti qui. Penso che la vera risposta a questa domanda sia: "Non ci sono regole semplici per garantire la sicurezza del thread". Freddo. Belle. Ma in generale penso che la risposta accettata fornisca un riassunto buono e breve. Ci sono sempre delle eccezioni. Così sia. Posso vivere con quello.