Взаимоблокировка порядка .NET SyncLock

Если у меня есть две синхронизации

synclock a
  synclock b
  end synclock
end synclock

мне грозит тупик, если я никогда не

synclock b
  synclock a
  end synclock
end synclock

в моем коде, но я случайно синхронизирую a или b?


person Hamm Tia    schedule 07.09.2010    source источник


Ответы (1)


Пока вы всегда блокируете a перед b, все будет в порядке.

person Hans Passant    schedule 07.09.2010
comment
Верно, но мне интересно, если a всегда заблокировано от функции 1, а b всегда заблокировано от функции 2, а синхронизация a, b находится в функции 3, и каждая функция выполняется в другом потоке, все ли со мной будет в порядке? ? - person Hamm Tia; 07.09.2010
comment
Трудно увидеть случай, когда код блокирует только b, а затем срабатывает внутри какого-то глубоко вложенного кода, который блокирует a. - person Hans Passant; 07.09.2010