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
コンパイラ オプションを設定するには
プロジェクトの [プロパティ ページ] ダイアログ ボックスを開きます。 詳しくは、「Visual Studio で C++ コンパイラとビルド プロパティを設定する」をご覧ください。
[構成プロパティ]>[C/C++]>[コマンド ライン] プロパティ ページを選択します。
[ 追加オプション ] ボックスで、有効にする
/forceInterlockedFunctions
を追加します。 [ OK] を 選択して変更を保存します。
このコンパイラ オプションをコードから設定するには
- AdditionalOptionsを参照してください。