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

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

2 ответа

Решение

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

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

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

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

Другие вопросы по тегам