У меня есть метод, который должен вызываться не более одного раза, например, Dispose
. Теперь я понимаю, что в следующем:Реализация одноразового использования по потоку
private bool _isAlive = true;
public void Dispose()
{
if (this._isAlive)
{
this._isAlive = false;
//Do Something
}
}
Но это не поточно-потому, что существует разрыв между comprasion и установив флаг _isAlive
ложь. Таким образом, возможно, что более одного потока выполняет код //Do Something
.
Есть ли там поточно-безопасный вариант?
возможно дубликат [поточно-замены для кода?] (Http://stackoverflow.com/questions/9061311/thread-safe-replace-for-code) ... особенно с учетом того, что у Вас есть получил практически тот же ответ на оба вопроса. –
@AndrewBarber не совсем ... вопрос, с которым вы связаны, схож, но касается только защиты от повторного размещения (т. Е. Нескольких исполнений параллельно) ... этот вопрос касается одноразового исполнения всего объекта жизни , – Yahia
Кстати, вы совершенно неправильно описываете свое требование. Дело не в том, что 'Dispose()' нужно вызывать не более одного раза, это почти точно противоположно: 'Dispose()' * must * может безопасно обрабатывать вызов более одного раза. –