Если Interlocked.Increment является атомарным, почему я должен когда-либо использовать ++ вместо этого? - PullRequest
1 голос
/ 23 мая 2011

Полагаю, эта атомарная операция выполняется быстрее, чем ++. Я вижу только преимущества в пользу Interlocked.Increment. Каковы его недостатки?

Ответы [ 2 ]

11 голосов
/ 23 мая 2011

Атомный означает, что он потокобезопасен (то есть один поток не может прочитать значение, в то время как другой изменяет его.) Это делает его медленнее, а не быстрее, из-за необходимости использовать механизмы синхронизации потоков. Вы хотите использовать ++, если вас не волнует безопасность потоков. Здесь - некоторое обсуждение относительной производительности оператора ++ в различных контекстах.

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

Atomic не означает, что он быстрее. На самом деле, это почти наверняка будет медленнее.

В параллельном программировании операция (или набор операций) атомарный, линеаризуемый, неделимый или непрерывный, если он кажется Остальная часть системы произойдет мгновенно.

Это просто означает, что во время операции нет видимых побочных эффектов. Он ничего не говорит о том, сколько времени занимает операция.

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