Является ли оператор блокировки в C # трудоемким? - PullRequest
2 голосов
/ 22 мая 2010

У меня есть метод, который много раз вызывался другими методами для хеширования данных.Внутри метода используются некоторые операторы блокировки.Не могли бы вы сообщить мне, является ли оператор блокировки трудоемким и как лучше его улучшить.

P / S: я нашел способ избежать использования оператора блокировки в этом методе.

Ответы [ 4 ]

11 голосов
/ 22 мая 2010

Ваш вопрос не отвечает.Это полностью зависит от того, является ли замок утверждаемым или нет.

Позвольте мне сказать это так: вы спрашиваете: "много ли времени уходит в ванную?", не сообщая нам, сколько людей уже в очереди, чтобы использовать его .Если в очереди никого нет, совсем не долго.Если обычно туда входит двадцать человек, то может быть очень долго.

6 голосов
/ 22 мая 2010

Сам по себе оператор блокировки не очень трудоемкий, но может привести к конфликту из-за общих данных.

Продолжение: если вам нужно защитить общие данные, используйте блокировку.Код без блокировки трудно выполнить правильно, как это иллюстрирует эта статья .

1 голос
/ 22 мая 2010

Вы можете найти эту статью в темах интересной и актуальной. Одно из утверждений, которое он делает, - «Сама блокировка очень быстрая: блокировка обычно получается за десятки наносекунд при условии отсутствия блокировки».

1 голос
/ 22 мая 2010

Сам оператор блокировки на самом деле является неким синтаксическим сахаром, который создает объект Monitor и управляет им.

Само по себе это обычно не слишком ресурсоемко, но может стать проблемой, если у вас есть несколько операций чтения, но нет записи в вашу переменную в нескольких потоках. Каждое чтение должно ждать окончания другого, прежде чем чтение может завершиться. В сценариях, где вы можете получать переменную из нескольких потоков, но не устанавливаете ее, вам может потребоваться использовать объект ReaderWriterLockSlim для управления асинхронным чтением и записью.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...