共用方式為


/forceInterlockedFunctions

在運行時根據 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 編譯程式選項

  1. 開啟專案的 [ 屬性頁 ] 對話框。 如需詳細資料,請參閱在 Visual Studio 中設定 C ++ 編譯器和組建屬性

  2. 選取 [組態屬性]>[C/C++]>[命令列] 屬性頁。

  3. Additional options (其他選項 ) 框中,添加 /forceInterlockedFunctions 以啟用。 選取 [確定] 儲存您的變更。

若要以程式方式設定這個編譯器選項

另請參閱

Arm64 內部函數
MSVC 編譯器選項
MSVC 編譯器命令列語法