W mojej aplikacji wielowątkowej używam niektórych zmiennych, które mogą być zmieniane przez wiele instancji w tym samym czasie. To dziwne, ale sprawdziło się bez problemu. Ale oczywiście muszę sprawić, by był bezpieczny dla wątków. Właśnie zaczynam od blokad, więc będę aprobować twoją radę:Blokowanie właściwości, dobre podejście?
Kiedy klient łączy się, klasa Klient jest tworzona, gdy każdy Klient ma swoją własną zmienną "A".
Czasami klient wywołuje metodę tak:
Client selectedClient SelectOtherClientClassByID(sentID);
selectedClient.A=5;
żadnych problemów do tej pory z tym, nawet gdy 5 klas robili w tym samym czasie (pula wątków), ale myślałem, co na temat dodawania zamki do A właściwościach ?
odczuwalna:
A {
get { return mA; }
set {
// use lock here for settting A to some value
}
}
byłoby OK?
Dziękuję ... btw za przeczytanie to dlatego, że mogło to ulec zmianie podczas czytania przez inną klasę? – Petr
Nie jest dobrym pomysłem zablokowanie tego, ponieważ jest dostępny z zewnątrz typu. –
Może ulec zmianie podczas ustawiania. Blokada działa jak bariera, uniemożliwiając jakiekolwiek inne działanie, dopóki właściciel blokady nie zwolni blokady. –