私はC++でプログラムし、スレッド同期のためにCAS操作を使用します。'__atomic_compare_exchange'のassmblyコードを理解するのが難しい
私はVtuneを使用して自分のプログラムをプロファイリングし、CASの操作に膨大な時間を費やしていることがわかりました。
私はアセンブリコードを見ました。
プロファイリング結果が '(%のRDI)、cmpxchgq%RCXロック' 時間のかなりの部分が 'MOVQの%のRAX、(%のRSI)' ではなく、上に費やされていることを示しています。
CASオペレーションに関連する「movq%rax、(%rsi)」の演算はどのように行われますか? この操作で移動されるデータはどれですか?
はプレーンテキストとしてここにコード、エラーやテキスト出力を投稿してください次の命令に起因する、しないように難しいことができ、画像のように読んだり、コードをテストしたり回答に使うのにコピー貼り付けたり、スクリーンリーダーを使っている人には敵対的です。質問を編集して、質問の本文にコードを追加することができます。 '{}'ボタンを使ってコードのブロックを整形するか、同じ効果のために4つのスペースをインデントします。 – tadman