Safe Threading

0

Chce aby zmienna była bezpieczna przy używaniu jej przez kilka wątków, próbuje zrobić to w ten sposób:


private readonly object VariableLock = new object();

       private SomeClass _Variable;

       public SomeClass Variable
       {
           get
           {
               SomeClass temp;
               lock (VariableLock)
                   temp = this._Variable;
               return temp;
           }
           set
           {
               lock (VariableLock)
                   _Variable = value;
           }
       }

ale nie jestem pewny czy robię dobrze, a jeśli robię dobrze to czy w "get" potrzebny jest lock czy nie.

0

W get jak najbardziej ma być lock, ale jeżeli SomeClass jest reference type(typ referencyjny?) a nie value type(typ wartościowy?), to tak na prawdę nie dostaniesz z niego "bezpiecznego" obiektu, jedynie bezpiecznie wykonasz operację przypisania referencji.
Aby get był bezpieczny, będziesz potrzebował deep copy/clone.

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0