I'm wondering whether the omission of the backlinks in the examples is a
good thing. The omission makes the technique trivial, since publishing
only involves one replacing one pointer.
What about the second, back, one? Without support for atomic two-pointer
updates, how can both the p->prev->next = q and p->next->prev = q updates
be performed without risking clients to see an inconsistent view of the
doubly linked list? Or is that not a problem in practice?
Thanks for the article, though. Looking forward to the next installment!