Ho la seguente dichiarazione di blocco:Una variabile di blocco deve essere dichiarata volatile?
private readonly object ownerLock_ = new object();
lock (ownerLock_)
{
}
Dovrei usare volatile parola chiave per la mia variabile di blocco?
private readonly volatile object ownerLock_ = new object();
su MSDN ho visto che di solito utilizzato per un campo a cui si accede senza bloccare, quindi se io uso di blocco non ho bisogno di usare volatili?
Da MSDN:
Il modificatore volatile è solitamente utilizzato per un campo a cui si accede da più thread senza utilizzare l'istruzione lock per serializzare accesso.
Abbiamo bisogno di molto più contesto di questo per rispondere alla domanda. Dove si trova questo blocco in relazione agli oggetti che utilizzano il lucchetto? –
È sicuramente thread-safe così com'è attualmente. Nessuna garanzia sarà possibile quando aggiungi il codice all'interno del blocco lock {}. –
Non dovresti aver bisogno di bloccare un oggetto 'readonly' ... in quanto è' readonly' ... – NominSim