Да и нет; в зависимости от того, какая операционная система присутствует, присутствует ли вообще, и чего вы пытаетесь достичь.
Если вам доступна роскошь полной многозадачной и многопоточной операционной системы, вы должны выбрать свои примитивы из коллекции, которую она вам предоставляет, или вы рискуете неэффективностью в лучшем случае и нерабочей синхронизацией в худшем случае. Каждая ОС имеет свои идиомы и предпочтительные механизмы, и несоблюдение этих соглашений также может иметь затраты.
Чем дальше вы получаете от полного ядра (или глубже от ядра и драйверов устройств, которые вы получаете), вы обнаружите, что лучшие идиомы включают примитивы синхронизации более низкого уровня.
Даже одноядерный ЦП имеет обработчики прерываний, которые могут (в принципе) выполняться между любой парой инструкций или даже во время некоторых многоцикловых инструкций в некоторых архитектурах. Это фактически своего рода параллелизм, хотя и слабее, чем у второго ядра, поэтому примитивы синхронизации требуются при обмене данными между основным потоком (ами) и любыми обработчиками прерываний в фоновом режиме. Разумеется, в одном ядре синхронизация между потоками переднего плана должна включать переключение контекста.
Ожидание условия, установленного в обработчике прерываний, или условия, установленного в аппаратном регистре, - это оба случая, когда отдельный поток переднего плана в одноядерном процессоре может не иметь лучшего выбора, чем вращение флага или регистра.
Редактировать: Я попытался уточнить этот ответ, чтобы было ясно, что я говорю о синхронизации в целом больше, чем о реализации спин-блокировки в любой конкретной ОС. Вопрос не в том, какая ОС (если есть) и не помечена для какой-либо конкретной ОС.