Некоторые примитивы синхронизации, такие как инструкция lock или класс Mutex, позволяют одному и тому же потоку получить их более одного раза (они должны быть освобождены столько же раз, сколько были приобретены
C# Concurrency. Асинхронное программирование и многопоточность
·
Нир Добовицки