C # многопоточность - PullRequest
       39

C # многопоточность

2 голосов
/ 31 марта 2011

Может ли ICollection<T>.Count свойство getter считаться атомарным (и, следовательно, threadsafe)?

Спасибо.

Ответы [ 3 ]

7 голосов
/ 31 марта 2011

Это полностью зависит от коллекции; ICollection<T> это просто интерфейс.

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

7 голосов
/ 31 марта 2011

Нет, так как вы можете сделать это предположение только для реализаций, а не для интерфейса.

3 голосов
/ 31 марта 2011
  • Atomic будет иметь смысл только для реализации и не интерфейса . У вас может быть две реализации: одна не ориентированная на многопотоковую реализацию, другая безопасная для нитей.

  • List<T> не является потокобезопасным, поскольку не использует InterLocked.

...