mutex
A lock that lets only one thread at a time into a piece of code; threads that must wait are put to sleep by the operating system.
A mutex provides mutual exclusion with blocking waits: an uncontended lock and unlock are an atomic instruction each, and a contended waiter sleeps in the kernel (Linux futex, macOS os_unfair_lock/ulock, Windows SRW locks) instead of spinning.
See also