Writing mutexes from scratch in Go

Another hands-on tutorial on implementing a mutex, through spinlocks, process schedulers, and finally the grand idea of futex. Very nice summary, and the part with using Go explicit coroutine scheduling is a nice touch.