Использование ReaderWriterLockSlim
- это прежде всего оптимизация производительности в сценариях, когда много потоков часто читает из ресурса, но только несколько потоков записывают в него.
Класс Monitor (используемый оператором блокировки) получает эксклюзивную блокировку ресурса - это означает, что блокируются как читатели, так и пишущие. Однако во многих случаях чтение гораздо чаще, чем письмо. В этих сценариях использование блокировки чтения / записи позволяет нескольким считывателям одновременно вводить блокировки, но только одному устройству записи одновременно (когда все считыватели в очереди отсутствуют).
В вашем примере блокировка чтения / записи имеет смысл только в том случае, если есть другой код, который просматривает очередь, не удаляя элемент ... в противном случае все операции изменяют записи, и lock
утверждение было бы более уместным.