Правильно ли, что единственный способ предотвратить одновременный запуск метода одновременно - с помощью инструкции lock
?предотвращает одновременный запуск метода из разных потоков
private object lockMethod = new object();
public void Method() {
lock (lockMethod) {
// work
}
}
public void FromThread1() {
Method();
}
public void FromThread2() {
Method();
}
Конечно, я могу также использовать MethodImpl(MethodImplOptions.Synchronized)
, что было бы почти то же самое.
Есть ли другие методы?
Я немного обеспокоен тем, что вы пытаетесь заблокировать _method_, а не блокировать _data_ - какую проблему вы пытаетесь решить? – sarnold
Поскольку вы не показываете какие-либо методы 'static', вы действительно пытаетесь предотвратить выполнение метода дважды для одного и того же экземпляра одновременно? Или любые два метода для одного экземпляра одновременно? – HABO
метод настолько мал, что в моей ситуации блокировка метода = блокировка данных – javapowered