Блокировки чтения и записи
Класс ReaderWriterLockSlim разрешает одновременное чтение ресурса несколькими потоками, однако для записи в ресурс требуется блокировка взаимоисключающего доступа.
Класс ReaderWriterLockSlim следует использовать в приложении для обеспечения синхронизации доступа к общему ресурсу между потоками. Блокировки устанавливаются на сам объект ReaderWriterLockSlim.
Как в любом механизме синхронизации, необходимо убедиться, что потоки не обходят блокировку, предоставленную ReaderWriterLockSlim. Одним способом подобного обеспечения является разработка класса, который инкапсулирует общий ресурс. Этот класс должен предоставлять элементы, которые получают доступ к закрытому общему ресурсу и используют закрытый объект ReaderWriterLockSlim для синхронизации. См. пример, приведенный для класса ReaderWriterLockSlim. ReaderWriterLockSlim достаточно эффективен для синхронизации отдельных объектов.
Приложение должно быть создано так, чтобы уменьшить время операций чтения и записи. Длительные операции записи отрицательно сказываются на пропускной способности, поскольку блокировка записи является взаимоисключающей. Длительные операции чтения блокируют ожидающие средства записи, и если хотя бы один поток ожидает доступа для записи, потоки, запросившие доступ для чтения, также будут заблокированы.
Примечание |
---|
У .NET Framework имеется две блокировки ввода-вывода, ReaderWriterLockSlim и ReaderWriterLock.Рекомендуется использовать ReaderWriterLockSlim для всех новых проектов.Класс ReaderWriterLockSlim похож на класс ReaderWriterLock, но использует упрощенные правила рекурсии и повышения или понижения уровня состояния блокировки.Класс ReaderWriterLockSlim позволяет избежать многих случаях потенциальной взаимоблокировки.Кроме того, производительность ReaderWriterLockSlim гораздо выше, чем производительность ReaderWriterLock. |