Нужно ли блокировать, когда мы получим свойство в C # - PullRequest
3 голосов
/ 02 мая 2011

В C # необходимо ли блокировать при получении энергонезависимого свойства?Я знаю, что мы должны заблокировать при установке свойства.как насчет получения?

Теперь 3.0 предоставляет автоматическое свойство, само по себе оно безопасно для потоков?

Ответы [ 4 ]

4 голосов
/ 02 мая 2011

Да.Если несколько потоков читают / записывают в одно и то же свойство, вам придется заблокировать его.

Автоматические свойства - не что иное, как синтаксический сахар и не блокируются.

4 голосов
/ 02 мая 2011

Нет, автоматические свойства не являются поточно-ориентированными.Они не более чем синтаксический сахар;компилятор автоматически генерирует приватные резервные поля, как если бы вы их выписали вручную.

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

2 голосов
/ 02 мая 2011

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

1 голос
/ 02 мая 2011

Я бы сказал, что это зависит от типа собственности.Если он может быть прочитан атомарно (например, int или указатель), тогда чтение безопасно.

Однако если вы обращаетесь к объекту через свойство, то несколько потоков могут одновременно обращаться к этому объекту.

но блокировка в получателе / ​​установщике здесь тоже не поможет.

hth

Марио

...