Подтвердить что ты не робот

Разница между Java integer и С# Interlocked.Increment method

Мне просто интересно, есть ли разница между тем, как вы увеличиваете статическую переменную в Java и С# в поточной среде?

В Java вы используете атомный int: s, чтобы выполнить эту операцию, а на С# вы используете Interlocked.Incement(ref yourVar)

Я этим не имею в виду код, который вы пишете, но как он фактически блокирует память и делает фактическое приращение.

4b9b3361

Ответ 1

Функция блокировки не блокирует память, она скорее испускает префикс LOCK для команды в зависимости от операции. Это заставляет процессор утверждать блокировку шины, поэтому только одна команда выполняется один раз. Вы также можете просмотреть следующую статью.

Ответ 2

В случае Java - "как это работает" зависит от набора команд платформы выполнения. Я читал (ранее сегодня, ожидая завершения бесконечного обновления ОС), что на x86 классы AtomicXxx реализованы с помощью команды Compare and Swap (CAS).