Не уверен, поможет ли какая-либо из моих болтовней, но я все равно нажму кнопку "Опубликовать".
Ответ зависит от реализации backoff()
.Поскольку цель здесь состоит в том, чтобы избежать синхронизации, локального хранилища не будет - может быть, какое-то в ThreadLocal
.Если алгоритм отката использует рандомизатор, он также должен быть реентерабельным.Так что, скорее всего, вы способны поделиться им между pop
и push
- теперь вы этого хотите.Так как push и pop пытаются изменить ссылку top
, было бы хорошо, если бы откат дал последовательным потокам совершенно разные числа.Есть больше разногласий вокруг толчка или популярности?Нужно ли нам более агрессивно отступать тем или иным способом?Если это общий стек, то вы не будете знать.
С точки зрения того, как откат может быть «реструктурирован», я также не уверен.Можете ли вы использовать успешный толчок или поп как возможность уменьшить время отсрочки?Как насчет разницы между случайным ожиданием отката и простыми числами в последовательности, присвоенной ThreadLocal
?