Ich programmiere in C++ und benutze CAS-Operation für die Thread-Synchronisation.Schwierigkeiten beim Verstehen des Assembler-Codes von "__atomic_compare_exchange"
Ich profilierte mein Programm mit Vtune und stellte fest, dass ein großer Teil der Zeit für den CAS-Betrieb aufgewendet wurde.
Ich schaute auf den Assembler-Code.
Das Profilierungser zeigt, dass der signifikante Teil der Zeit auf 'movq% Rax, (% rsi)' ausgegeben wird, aber nicht auf 'Lock cmpxchgq% RCX, (RDI%)'.
Wie ist 'movq% rax, (% rsi)' im Zusammenhang mit CAS-Betrieb? Welche Daten werden durch diesen Vorgang verschoben?
Bitte Postleitzahl, Fehler oder Textausgabe hier als Klartext, nicht als Bilder, die hart sein kann, lesen, kann nicht kopiert werden, um Code zu testen oder in Antworten zu verwenden, und sind feindlich gegenüber denen, die Bildschirmleser verwenden. Sie können Ihre Frage bearbeiten, um den Code im Hauptteil Ihrer Frage hinzuzufügen. Verwenden Sie die Schaltfläche '{'} ', um beliebige Codeblöcke zu formatieren, oder versehen Sie sie mit vier Leerzeichen für denselben Effekt. – tadman