В чем разница между версиями Slim и старшими классами, и когда я должен использовать одну поверх другой?
Ответ 1
ReaderWriterLockSlim - лучшая версия ReaderWriterLock, которая быстрее и не страдает от голода писателя
ManualResetEventSlim и SemaphoreSlim являются полностью управляемыми версиями ManualResetEvent и Semaphore, которые затягиваются на некоторое время, прежде чем возвращаться к объектам ядра и, следовательно, быстрее, чем старые версии, когда время ожидания коротки.
Ответ 2
Вот несколько замечательных иллюстраций, объясняющих "поток" этих примитивов синхронизации. Они могут быть полезны для более конкретного понимания этих терминов (взято из этого блога)
"В .NET Framework версии 4 вы можете использовать класс System.Threading.ManualResetEventSlim для лучшей производительности, когда ожидаемое время ожидания будет очень коротким, а когда событие не пересечет границу процесса"
Ответ 4
ManualResetEventSlim и SemaphoreSlim - это более легкие версии объекта ядра, и они не выделяют объекты ядра, если не вызывается свойство WaitHandle.
Эти типы не блокируются напрямую, когда вызывается Wait, вместо этого они ненадолго вращаются перед блокировкой, если он получает сигнал
Конструктор ManualResetEventSlim может забирать SpinCount для блокировки числа spns перед блокировкой
Оба этих типа поддерживают отмену, когда вы можете передать метод CancellationToken to Wait
СемафорSlim предоставляет свойство CurrentCount, где окна Семафор не
ManualResetEvent имеет свойство IsSet, в котором событие windows не