Nella mia applicazione multithreading sto usando alcune variabili che possono essere modificate da molte istanze nello stesso tempo. È strano ma ha funzionato bene senza alcun problema..ma ovviamente ho bisogno di renderlo thread-safe. Sto solo cominciando con le serrature quindi consiglioi il tuo consiglio:Blocco di proprietà, buon approccio?
Quando il client si connette, viene creato il client di classe in cui ogni client ha la propria variabile "A".
A volte, client chiama il metodo del genere:
Client selectedClient SelectOtherClientClassByID(sentID);
selectedClient.A=5;
Nessun problema fino ad ora con che anche quando 5 classi stavano facendo al tempo stesso (threadpool), ma stavo pensando che dire di aggiungere blocchi per A Proprietà ?
come:
A {
get { return mA; }
set {
// use lock here for settting A to some value
}
}
sarebbe OK?
Grazie ... per la lettura è perché potrebbe essere cambiato durante la lettura da un'altra classe? – Petr
Non è consigliabile bloccarlo perché è accessibile dall'esterno. –
Potrebbe cambiare mentre stai impostando. La serratura funge da barriera, impedendo qualsiasi altra azione fino a quando il proprietario del lucchetto non rilascia il lucchetto. –