Есть класс, в нем есть read-write свойство. Хочу обеспечить:
(1) thread-safe доступ к значению свойства снаружи класса
(2) возможность организации крит.секций ( изнутри и снаружи класса), в которых задействовано это свойство
Целевая функция при этом — инкапсулированный и читаемый код.
Отцы
![](/Forum/Images/smile.gif)
,
покритикуйте мой вариант и предложите свой:
class Test
{
readonly object sync = new object();
object Sync { get { return this.sync; }}
int x;
public int X
{
get
{
lock(this.Sync)
{
return this.x;
}
}
set
{
lock(this.Sync)
{
this.x = value;
}
}
}
public void F() // пример крит.секции, необходимой для атомарности нескольких операций
{
lock(this.Sync)
{
if(this.X == 0)
this.X = 100;
}
}
}
За счет пабликовости Sync критическую секцию можно делать аналогичным способом и снаружи класса.