_InterlockedCompareExchange64 встроенный компилятор в Windows XP? - PullRequest
4 голосов
/ 03 октября 2011

На основании документации Microsoft InterlockedCompareExchange64 недоступен как вызов API Windows до Windows Vista.См. http://msdn.microsoft.com/en-us/library/windows/desktop/ms683562(v=vs.85).aspx.

Однако кажется, что встроенная функция компилятора _InterlockedCompareExchange64 может быть доступна в Windows XP, если вы используете процессор Pentium или выше: http://msdn.microsoft.com/en-us/library/ttk2z1ws(VS.80).aspx.

Это правильно?Есть ли там что-нибудь гоча?

1 Ответ

3 голосов
/ 03 октября 2011

Документация вполне соответствует. Функция API доступна с Vista или Server 2003, но если вы предпочитаете встроенный (то есть не требуется внешнего API), компилятор MS реализует функцию с помощью специальной инструкции CPU (см. Замечания ):

Поскольку _InterlockedCompareExchange64 использует инструкцию cmpxchg8b , он недоступен на процессорах, предшествующих Pentium, таких как 486.

Замечено, что эта инструкция может быть проблемой с очень старыми процессорами. Это означает, что если вы запустите приложение на процессоре 486, оно просто рухнет, как только наткнется на этот код.

...