Можно настроить Windows на использование только одного аппаратного потока. Каждая машина за последние пару лет кажется по крайней мере двухъядерной, но некоторые ошибки синхронизации воспроизводятся только при последовательном выполнении потоков. Меня особенно интересует Windows Vista.
Дэвид, давайте сначала ответим на ваш прямой вопрос: как ограничить Windows Vista одним ядром.
Я вижу два пути:
(a) Запустите Vista на виртуальной машине на Hyper-V и предоставьте виртуальной машине только один логический процессор. Это оставляет вам остальную часть машины для хорошего использования.
(б) В качестве альтернативы вы можете использовать / numproc = 1 параметр в boot.ini, чтобы заставить машину использовать один процессор. Вы можете настроить это через msconfig.
альтернативный текст http://i39.tinypic.com/141789i.png
Но может быть достаточно ограничить только твоя программа к одному ядру, то установка сродства процессора это предпочтительный ответ. Это может быть достигнуто путем настройки или непосредственно из кода вашего процесса.
Помимо этого, вы также можете рассмотреть расширенные инструменты отладки многопоточности, такие как Проверка потока Intel если это применимо к вашей среде.
Что вы ищете, так это то, как установить «привязку к процессу», и то, как вы ее устанавливаете, зависит от того, какую программу вы запускаете и как вы ее запускаете.
Я видел этот ответ при переполнении стека: stackoverflow.com/questions/827754 / ....
Также на многих машинах в BIOS может быть отключен SMP (и гиперпоточность, если применимо).
Ошибки синхронизации (или обычное подмножество состояний гонки), по-видимому, более широко воспроизводятся на многоядерных машинах.
Вам нужно, чтобы переключатель / onecpu в boot.ini выглядел здесь: http://support.microsoft.com/kb/170756