Нет, он не должен тупиковать.
Func1
может получить блокировку, если она вызывается кем-то, кто уже удерживает блокировку (например, Func2
)
Документ MSDN для блокировки объясняет:
"Пока блокировка взаимного исключения удерживается, код, выполняющийся в том же потоке выполнения, также может получать и снимать блокировку. Однако код, выполняющийся в других потоках, блокируется для получения блокировки, пока блокировка не будет снята."
Цель блокировки - запретить различным потокам доступ к одному и тому же ресурсу. Func1
и Func2
находятся в том же потоке .