質問:
アトミック データが大きいというのは本当ですか?構造体はアトミックな操作にロックを使用します。使用する場合、このロックはどこに保存され、複数のインスタンスにどのような影響があるか。アトミック変数?
答え:
std::atomic 変数のロックの実装には、通常、各アトミック オブジェクトへのアクセスをシリアル化するためのミューテックスまたはスピンロックのハッシュ テーブルが含まれます。アトミック オブジェクトのアドレスは、関連付けられたミューテックスをハッシュ テーブルから取得するためのキーとして使用されます。
ハッシュの衝突が発生し、複数のアトミック オブジェクトが同じロックを共有する可能性があります。これは正確性の問題ではありませんが、ロックの競合の増加によるパフォーマンスの低下につながる可能性があります。
複数のインスタンスの影響:
ロック メカニズムにより、次のことが保証されます。常に 1 つのスレッドだけがアトミック変数にアクセスできます。ただし、ロックはオブジェクトごとではなくプロセスごとに行われることに注意することが重要です。これは、異なるプロセス内のアトミック変数の複数のインスタンスが独自の専用ロックを持ち、独立して動作することを意味します。
以上がロックは「std::atomic」実装のどこに保存されますか?また、複数のインスタンスに対する影響は何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。