次の方法で共有


/forceInterlockedFunctions

Armv8.0のロード、ストアの排他命令、またはArmv8.1 Large System Extension(LSE)アトミック命令を、実行時のCPU機能に基づいて動的に選択します。

構文

$

注釈

可能な場合、このフラグは Armv8.0 の load and store 排他命令の使用を回避します。これは、これらの命令がライブロックを引き起こす可能性があるためです。 このフラグは、次のインターロックされた組み込み関数を行外関数として生成するように強制します。

オペレーション 8 16 32 64 128 ポインター
追加する 無し 無し 完全 完全 無し 無し
そして 完全 完全 完全 完全 無し 無し
比較交換 完全 完全 完全 完全 完全 完全
減少 無し 完全 完全 完全 無し 無し
交換 完全 完全 完全 完全 無し 完全
交換追加 完全 完全 完全 完全 無し 無し
インクリメント 無し 完全 完全 完全 無し 無し
又は 完全 完全 完全 完全 無し 無し
Xまたは 完全 完全 完全 完全 無し 無し
bittestandreset (ビットテストとリセット) 無し 無し 完全 完全 無し 無し
bittestandset 無し 無し 完全 完全 無し 無し

キー:

  • フル: プレーン、 _acq_rel_nf の各フォームをサポートします。

  • なし: サポートされていません

インターロックされた組み込みの詳細については、「 Arm64 組み込み」の「インターロックされた組み込み」セクションを参照してください。

Visual Studio で /forceInterlockedFunctions コンパイラ オプションを設定するには

  1. プロジェクトの [プロパティ ページ] ダイアログ ボックスを開きます。 詳しくは、「Visual Studio で C++ コンパイラとビルド プロパティを設定する」をご覧ください。

  2. [構成プロパティ]>[C/C++]>[コマンド ライン] プロパティ ページを選択します。

  3. [ 追加オプション ] ボックスで、有効にする /forceInterlockedFunctions を追加します。 [ OK] を 選択して変更を保存します。

このコンパイラ オプションをコードから設定するには

こちらも参照ください

Arm64 組み込み関数
MSVC コンパイラ オプション
MSVC コンパイラのコマンド ライン構文