C# Входящий замок с отменой - PullRequest
0 голосов
/ 02 марта 2020

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

Monitor - не имеет Wait(CancellationToken) метод

lock (_lock) - использует монитор внутри, не имеет Wait(CancellationToken) метод

SemaphoreSlim - не разрешает повторный вход только для текущего потока, если я установил счетчик более чем на 1, два потока могут получить блокировку одновременно

Mutex - не разрешает повторный вход

Существует ли какой-либо встроенный класс синхронизации для достижения этой цели или я должен написать один самостоятельно?

...