I have read on multiple occasions that linked lists are, at best, a niche data structure ill-suited for general purpose use due to their poor cache locality. Yet almost every example of a lock-free data structure I have seen uses a linked list. Both *C++ Concurrency in Action* and *The 
Art of Multiprocessor Programming*, for instance, use a linked list in their implementation of a lock-free stack and queue.

Are there better alternatives to linked lists when designing lock-free containers, such as stacks and queues?