Я ищу защиту ресурсов, например ReaderWriterLock
, которая блокирует поток на Enter
, но не полагается, что Release/Exit
вызывается в той же теме. Вместо этого я предпочел бы метод выпуска/выхода IDisposable
. (Высота блокировки от чтения до записи вообще не требуется).non thread specific IDisposable based ReaderWriterLock
Я уже обернул ReaderWriterLock
с помощью аксессуара IDisposable
, который отлично работает, пока не будет задействована асинхронная модель ожидания. Когда я использую его с асинхронным ожиданием в контексте сервера (ASP.NET Web Api), тогда даже простой блок using
вызывает Dispose()
в другом потоке, если в блоке использования есть await
.
Кто-нибудь знает класс (Framework или NuGet), который способен к такой блокировке с несколькими чтениями и одиночными записями?
«Кто-нибудь в курсе класса (Framework или NuGet), который способен к такой блокировке Multi-Read-Single-Write? " Для этого ReaderWriterLockSlim' специально разработан ** для этой цели. Я думаю, что ваш вопрос должен состоять в том, как реализовать это в асинхронной среде? – aevitas
@aevitas Из [msdn] (https://msdn.microsoft.com/en-us/library/system.threading.readerwriterlockslim%28v=vs.110%29.aspx): 'ReaderWriterLockSlim управляет связью потоков; то есть каждый объект Thread должен сделать свои собственные вызовы методов для входа и выхода из режима блокировки. ', поэтому я думаю, что у вас есть выход в потоке, который вы вводите. – xanatos
[Построение примитивов для координации Async, часть 7: AsyncReaderWriterLock] (http: // blogs .msdn.com/б/pfxteam/Архив/2012/02/12/строительные Асинхры-координационные-примитивы-часть-7-asyncreaderwriterlock.aspx). – Noseratio