x64 Assembly MultiThreading 3: Mutexes, SpinLocks and Critical Sections