Существует тонна исследований по блокируемому двукратно связанному списку. Аналогично, есть тонны ресерах на незащищенных списках пропуска. Однако, насколько я могу судить, никому не удалось заблокировать двойной двунаправленный список пропусков. Кто-нибудь знает какие-либо исследования об обратном, или почему это так?Блокировка бесплатного дважды связанного списка пропусков
Редактировать: Конкретный сценарий предназначен для создания аккумулятора с быстрым квантилем (50%, 75% и т. Д.). Образцы вставляются в список пропуска в O (log n). Сохраняя итератор в текущем квантиле, мы можем сравнить вставленное значение с текущим квантилем в O (1) раз и легко определить, находится ли вставленное значение слева или справа от квантиля и на сколько квантиль в результате нужно двигаться. Это левый ход, для которого требуется предыдущий указатель.
Как я понимаю, любая трудность будет заключаться в том, чтобы сохранить предыдущие указатели согласованными с одновременным вводом и удалением нескольких потоков. Я предполагаю, что решение почти наверняка привлечет умное использование указательной маркировки.
Итак, каждый раз, когда вы добавляете элемент в список, который хотите перейти, и корректируйте данные квантили, чтобы каждый квантиль знал свое начальное значение, диапазон, а также указатель на начальный элемент в квантиле? Я предполагаю, что вычисление квантильной информации на основе запроса, если список пропусков грязный, слишком медленный? – johnnycrash
@johnnycrash Каждый раз, когда вы вставляете, вы знаете значение каждого квантиля, поэтому вы знаете, больше или меньше нового значения квантиля, и как таковая должна ли квантиль перемещаться вперед или назад на единицу. Я не уверен, что вы подразумеваете под диапазоном; квантиль всегда является единственным значением. В схеме, которую я использовал в конечном счете, постоянный коэффициент метода пропуска был выше наивного метода, но он очень сильно масштабировался по мере увеличения числа операций. Стоимость обновления квантиля была постоянной для каждой вставки. – tgoodhart