Разработка сервера каналов не может быть перенесена

Более широкое обсуждение истоков и полезности lazySet и лежащего в основе putOrdered можно найти здесь: http://psy-lob-saw.blogspot.co.uk/2012/12/atomiclazyset-is-performance -win-for.html

Подводя итог: lazySet - это слабая волатильная запись в том смысле, что она действует как магазин-хранилище, а не забор для хранения. Это сводится к тому, что lazySet является JIT, скомпилированным в инструкцию MOV, которая не может быть повторно заказана компилятором, а не значительно более дорогая команда, используемая для энергозависимого набора.

При чтении значения, которое вы всегда делаете volatile read (с Atomic * .get () в любом случае).

lazySet предлагает единому писателю согласованный волатильный механизм записи, то есть совершенно законно для одного писателя использовать lazySet для увеличения счетчик, несколько потоков, увеличивающих один и тот же счетчик, должны будут разрешить конкурирующие записи с использованием CAS, что и происходит под обложками Atomic * для incAndGet.

0
задан FrancNovation 31 December 2018 в 19:58
поделиться