在運行時根據 CPU 能力,在 Armv8.0 載入、存儲獨佔指令或 Armv8.1 大型系統擴展 (LSE) 原子指令之間動態選擇。
語法
/forceInterlockedFunctions
[-
]
備註
在可能的情況下,此標誌可避免使用Armv8.0 load and store 獨佔指令,因為這些指令可能會導致活鎖。 此標誌強制將以下互鎖內部函數生成為外部函數:
行動 | 8 | 16 | 32 | 64 | 128 | 指針 |
---|---|---|---|---|---|---|
新增 | 沒有 | 沒有 | 完整 | 完整 | 沒有 | 沒有 |
和 | 完整 | 完整 | 完整 | 完整 | 沒有 | 沒有 |
比較交易所 | 完整 | 完整 | 完整 | 完整 | 完整 | 完整 |
遞減 | 沒有 | 完整 | 完整 | 完整 | 沒有 | 沒有 |
交換 | 完整 | 完整 | 完整 | 完整 | 沒有 | 完整 |
交易所添加 | 完整 | 完整 | 完整 | 完整 | 沒有 | 沒有 |
增加 | 沒有 | 完整 | 完整 | 完整 | 沒有 | 沒有 |
或 | 完整 | 完整 | 完整 | 完整 | 沒有 | 沒有 |
異或 | 完整 | 完整 | 完整 | 完整 | 沒有 | 沒有 |
bittestandreset | 沒有 | 沒有 | 完整 | 完整 | 沒有 | 沒有 |
bittestandset | 沒有 | 沒有 | 完整 | 完整 | 沒有 | 沒有 |
鍵
Full:支持 plain、
_acq
、_rel
_nf
和 forms。None:不支援
有關互鎖內部函數的詳細資訊,請參閱 Arm64內部函數中的「互鎖內部函數」部分。
在 Visual Studio 中設定 /forceInterlockedFunctions
編譯程式選項
開啟專案的 [ 屬性頁 ] 對話框。 如需詳細資料,請參閱在 Visual Studio 中設定 C ++ 編譯器和組建屬性。
選取 [組態屬性]>[C/C++]>[命令列] 屬性頁。
在 Additional options (其他選項 ) 框中,添加
/forceInterlockedFunctions
以啟用。 選取 [確定] 儲存您的變更。
若要以程式方式設定這個編譯器選項
- 請參閱 AdditionalOptions。