Как сказал Патрис, вы можете использовать библиотеку win32 для пользовательского режима (критическая секция содержит spincount, который будет вращаться).
Visual Studio 2010 Beta2 / Win7 x64 содержит Concurrency Runtime (ConcRT), которая построена на запланированных потоках пользовательского режима, которые позволяют ConcRT обнаруживать блокировку ядра и переключаться на другую задачу в пользовательском режиме (более низкие издержки) чем типичный контекстный обмен). Так, например, если вы используете boost :: thread и их условные переменные и мьютексы для задачи в ConcRT, они будут обрабатываться в пользовательском режиме.
Вы также можете использовать потоковые строительные блоки Intel, которые содержат некоторые спин-блокировки пользовательского режима. Нет условной переменной.
Энтони Уильямс имеет реализацию std :: thread для продажи на своем веб-сайте, которая включает в себя библиотеку атомарности из C ++ 0x, если вы действительно хотите создать свои собственные спин-блокировки.
В общем, если вы не выполняете очень мелкозернистую синхронизацию, где вы гарантируете, что не будет много споров, я бы посоветовал вам быть осторожным с использованием спин-блокировок, они, как правило, «вращаются» и, как таковые, потреблять ресурсы системного процессора ...
-Rick