public abstract BaseClass
{
private static readonly object _filelockStatic = new object();
private readonly object _filelock = new object();
public void StaticLock()
{
lock(_filelockStatic)
{
//Edit a common text file (common to all children)
}
}
public void InstanceLock()
{
lock(_filelock)
{
//Edit a common text file (common to all children)
}
}
}
Если у меня есть абстрактный класс с методом, который редактирует текстовый файл (один текстовый файл, общий для всех экземпляров дочернего класса), чтобы сделать его потокобезопасным нужно заблокировать статический член или это не имеет значения?блокировка статической или переменной экземпляра в абстрактном классе
Иными словами, в приведенном выше примере кода существует разница между InstanceLock()
и StaticLock()
с точки зрения безопасности потоков?
Если класс * не * 'abstract', вы уже знаете ответ на этот вопрос? По сравнению с не-абстрактным классом, который служит базовым классом для других классов? –
Не совсем ... Я предполагаю, что член «блокировки» должен быть статичным, но я не мог найти подтверждение 100% при поиске в Google, поэтому я думал, что опубликую, чтобы быть уверенным на 100%. Но также, статический замок достаточно хорош? Но, конечно, «абстрактная» не имеет к этому никакого отношения, более просто для иллюстрации того, что класс будет унаследован от – Dan
@Dan: «это статический замок достаточно хорош» - вы должны опубликовать критерии. – Dennis