Die „Lock“-Anweisung in der x86-Assembly ist ein Präfix, das den ausschließlichen Besitz des Busses für die nachfolgende Anweisung erzwingt. Dadurch wird sichergestellt, dass die CPU für die Dauer dieser Anweisung die vollständige Kontrolle über die Cache-Zeile hat.
Entgegen der allgemeinen Auffassung führt das Präfix „lock“ nicht dazu, dass die CPU gesperrt wird den Bus auf unbestimmte Zeit. Die Sperre wird nach der Ausführung der nachfolgenden Anweisung aufgehoben. Dadurch kann die CPU die optimale Leistung aufrechterhalten, indem sie den Bus nur dann sperrt, wenn dies unbedingt erforderlich ist.
Der von Ihnen bereitgestellte Codeausschnitt implementiert ein atomares Inkrement eines langen Wortes bei ein Speicherort, der durch den Wert im ECX-Register angegeben wird:
Das Ergebnis ist, dass die Variable atomar um erhöht wird 1, und das EAX-Register wird auf 0 gesetzt, wenn der neue Wert 0 ist, andernfalls 1. Beachten Sie, dass es sich bei diesem Vorgang um ein Inkrement und nicht um eine Addition handelt.
Das obige ist der detaillierte Inhalt vonHält der „Sperr'-Befehl in der x86-Assembly den Bus auf unbestimmte Zeit?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!