ロックフリーのサポートがない C の std::atomic
アトミックな二重操作x86_64
x86_64 での SSE/AVX ベクトル操作
C には現在、アトミック AVX/SSE ベクトル操作のサポートがありませんが、全体にわたる 128b または 256b キャッシュ ラインのアトミック転送を保証する方法はありません。
ただし、整列された double の共有配列でベクトルのロード/ストアを使用する場合、ティアリングのリスクを最小限に抑えるために、特定の予防措置を講じることができます。
Atomic 16B Load
アトミック 16B ストアと RMW
アトミック半分の 8B を持つ 16B オブジェクトの操作
コンパイラとアトミック操作
コンパイラーは、アトミック操作に最適なアセンブラー コードを常に生成するとは限りません。たとえば、XMM と二重レジスタ間の直接 movsd ロード/ストアを回避し、代わりに迂回メソッドを選択する場合があります。
以上がC の制限にもかかわらず、Double と Vector のアトミック操作を x86_64 でどのように実現できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。