Shared-Memory Synchronization (Synthesis Lectures on Computer Architecture)