Он сложен и отличается от варианта Unix к Unix.
Например, в Linux используется система под названием Futex (сокращение от Fast Userspace Mutex).
В этой системе атомная инкрементная и тестовая операция выполняется над переменной mutex в пространстве пользователя.
Если результат операции показывает, что в блокировке не было конфликта, вызов pthread_mutex_lock возвращается без переключения контекста в ядро, поэтому операция захвата мьютекса может быть очень быстрой.
Только при обнаружении конфликта происходит системный вызов (называемый futex) и происходит переключение контекста в ядро, которое переводит вызывающий процесс в спящий режим до освобождения мьютекса.
Существует много других подробностей, особенно для надежных и / или приоритетных мьютексов наследования, но в этом суть.
Подробнее см .: http://linux.die.net/man/2/futex и http://en.wikipedia.org/wiki/Futex