簡體   English   中英

_InterlockedCompareExchange64的用法

[英]The usage of _InterlockedCompareExchange64

在MSDN上,我看到了

InterlockedCompareExchange64

要求參數為64對齊,

但對於

_InterlockedCompareExchange64 

我沒有看到對齊的這種要求,並且提到了為InterlockedCompareExchange64提供編譯器內在支持。

那么,這是否意味着我可以使用_InterlockedCompareExchange64而無需關心對齊? 因為我不太清楚這里的對齊方式。

我很確定這是一個文檔錯誤,而不是兩個函數之間的任何直接差異 - 因為它們導致完全相同的CMPXCHG8B指令。 [當然假設你正在尋找它在SMP系統上實際上是原子的 - 但它是一個非常專業的指令,所以我懷疑它有很多其他用途]。

暗示,_underscore版本僅在定義_M_IA64或_M_AMD64時可用。 換句話說,當您將程序定位到64位處理器時。

您應該在代碼中使用非下划線版本。 當您以32位處理器為目標時,該功能在Windows中實現,您將獲得一個安全版本,該版本適用於未對齊的目標。 但是如果你的目標是64位處理器,那么你將自動獲得_underscore版本和內在版本。 WinBase.h中的宏湯負責處理它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM