Interesting.  I bought C++ Concurrency in Action today and am learning all these details of the memory model.<p>You mention of caches makes me realize that a single-reader single-writer queue can probably also be optimized by putting the head pointer and the tail pointer on different cache lines.  The reader and writer can cache the other&#x27;s value on their own page, and only reload it when the queue otherwise looks full or empty, respectively.  This should allow the reader and writer to act without needing to synchronize cache lines for many operations.