Мне нужен объект синхронизации, который позволяет рекурсивно блокировать этот же поток и имеет метод Wait(CancellationToken)
. Только один поток должен быть в состоянии получить блокировку одновременно. Следующее не соответствует моим потребностям, поэтому я спрашиваю здесь:
Monitor
- не имеет Wait(CancellationToken)
метод
lock (_lock)
- использует монитор внутри, не имеет Wait(CancellationToken)
метод
SemaphoreSlim
- не разрешает повторный вход только для текущего потока, если я установил счетчик более чем на 1, два потока могут получить блокировку одновременно
Mutex
- не разрешает повторный вход
Существует ли какой-либо встроенный класс синхронизации для достижения этой цели или я должен написать один самостоятельно?