Всем доброго вечера! Интересуюсь многопоточным программированием, задался вопросом, а как узнать поддерживает ли процессор многопоточность? К примеру, если организовывать синхронизацию потоков, существует несколько возможных вариантов неблокирующих конструкций. Одна из них, это для процессоров с технологией HyperThreading использовать метод SpinWait класса Thread, это эквивалент Win32-метода YieldProcessor. Рихтер пишет, что в процессорах, не поддерживающих данную технологию, вызов данного макроса позволяет писать код, независимый от архитектуры процессора. Я вот задумался, а можно ли написать код, который будет учитывать возможности процессора и при этом будут вызываться более конкретные методы, а также использоваться различные конструкции синхронизации?
Насколько я понимаю, дело не в HyperThreading - а в числе одновременно исполняемых потоков. В этом плане HyperThreading и "честные" многоядерные процессоры ничем не отличаются. Так что можете использовать функцию GetMaximumProcessorCount.