Minoru> <
@fvnever> Мне казалось, мы лок затем и делаем, чтоб никто не удалил.
представь, что мы удаляем ноду и взяли все три лока. В этот момент кто-то другой хочет удалить следующую ноду, и виснет на локе той, которую мы удаляем. Мы перелинкуем указатели, удаляем свою ноду и освобождаем локи. Тот второй тред наконец-то получает лок *на уже удалённую* ноду, берёт лок на себя и на следующего, линкует следующего *к уже удалённой ноде*, удаляет текущую и освобождает локи. В итоге имеем список, который можно пройти с начала в конец, но нельзя пройти из конца в начало (потому что обратная ссылка указывает на уже не существующую ноду)