V>Конкретная реализация целиком зависит от рантайма и на разных платформах реализована по разному.
Вот это и хочется изучить. Т.к не понятно, как именно мьютекс "усыпляет" поток, и кто потом его "просыпает"
как вообще работает эта машинерия.
Собственно для этого и создал данный топик
для тех кому интересно было бы исследовать и обсудить реализации для различных ОС / архитектур
V>Под Windows, например (VS2013), std::mutex реализован без использования вызовов WinAPI, почти так, как вы и описали, но spin блокировка крутится заданное число циклов (сейчас 4000) и уже по истечении этого времени квант потока отдается (он засыпает на pause). Фактически в С++ рантайм вынесены "кишки" стандартной critical section.
Понятно, любопытно. Т.е засыпание потока это уже функция ядра, и ядро же умеет "пробуждать" его, если где то в другом потоке мьютекс освободился?
т.е. ядро каким то образом связывает эти события