У меня есть давняя программа с FAA, которая отлично работает, пока FAA не приступит к развертыванию настольных компьютеров Dell GX-760. Программа представляет собой графическое воспроизведение воздушного движения. Я использую функцию QueryPerformanceFrequency для получения счетчика процессора. С GX 760 он не зависит от процессора. Я нашел это http://msdn.microsoft.com/en-us/library/ms644904(VS.85).aspx, который описывает то, что я вижу.Как вы используете SetThreadAffinityMask с QueryPerformanceFrequency?
На многопроцессорной ЭВМ, он не имеет значения, какой процессор называется. Тем не менее, вы можете получить различные результаты по разным процессорам из-за ошибок в базовой системе ввода-вывода (BIOS) или уровне абстракции аппаратного обеспечения (HAL) . В укажите сродство процессора к потоку , используйте функцию SetThreadAffinityMask .
Я не знаком с SetThreadAffinityMask, как это работает и как его реализовать? Вот мой код, который получает счет.
Спасибо,
Dave
'Declarations
Private Declare Function QueryPerformanceCounter Lib "kernel32" (lpPerformanceCount As Currency) As Long
Private Declare Function QueryPerformanceFrequency Lib "kernel32" (lpFrequency As Currency) As Long
'I set the Frequency on Startup
cTime.SetFrequency
Public Sub SetFrequency()
'Get the Processor Frequency. This is locked at Windows startup and does n
Dim f As Currency
QueryPerformanceFrequency f
cTime.Frequency = f
End Sub
When the program needs the time it calls
Public Function CurrentCount() As Currency
'What is the current processoer count
QueryPerformanceCounter CurrentCount 'get current count number
End Function
Вы ошибаетесь, у меня были некоторые игры, которые я сделал, которые опирались на крах QPC при выполнении математики физики из-за их смещения между ядрами (не процессорами) и QPC, возвращающих другое значение. В документации Microsoft для QPC имеется несколько ошибок или вводящая в заблуждение информация. – speeder