risposta

6

cortesia http://sreekalyan.blogspot.com/2007/01/thread-safe-and-thread-aware.html

filettatura Aware In qualsiasi momento, al massimo un filo può essere attivo sull'oggetto. L'oggetto è consapevole dei thread che lo circondano e si protegge dai thread mettendo tutti i thread in una coda. Dal momento che può esistere solo un singolo thread attivo sull'oggetto in un dato momento, l'oggetto conserverà sempre il suo stato. Non ci saranno problemi di sincronizzazione.

Thread safe: In un dato momento, più thread possono essere attivi sull'oggetto. L'oggetto sa come gestirli. Ha correttamente sincronizzato l'accesso alle sue risorse condivise. Può conservare i suoi dati di stato in questo ambiente multi-thread (cioè non cadrà in stati intermedi e/o indeterminati). È sicuro usare questo oggetto in un ambiente multi-thread.

L'utilizzo di un oggetto che non è né thread-aware né thread-safe può provocare l'ottenimento di dati casuali e non corretti e di eccezioni misteriose (a causa del tentativo di accedere all'oggetto quando viene utilizzato da un thread ed è instabile, stato intermedio al momento dell'accesso del secondo thread).

1

Credo che una funzione che esegue la propria serializzazione di mutex di blocco sia sicura per i thread, ma forse non thread aware.

Problemi correlati