architecture atomic mutex spin lock optimistic lock pessimistic lock no blocking algorithm lock free wait free wiki Lamport's bakery algorithm Non-blocking algorithm Shared register Shared snapshot objects Consensus article Memory Consistency Models: A Tutorial Lecture 15: Consistency Models Memory Consistency vs Cache Coherence tutorial Concurrent Data Structures Multiprocessor Programming The Art of Multiprocessor Programming practice multithread in c