Warum atomare Schreibvorgänge in Compilern nicht optimiert werden
Frage: Warum führen Compiler redundante atomare Schreibvorgänge nicht zusammen? den gleichen Wert für ein einzelnes Atom Variable?
Erklärung:
Die C 11/14-Standards ermöglichen die Faltung oder Zusammenführung aufeinanderfolgender Geschäfte zu einer atomaren Variablen zu einem einzigen Geschäft. In einigen Fällen kann diese Optimierung auch dann durchgeführt werden, wenn die Filialen unterschiedliche Werte haben. Allerdings führen Compiler diese Optimierung derzeit aufgrund mehrerer Faktoren nicht durch.
Gründe für die Optimierungsvermeidung:
Lösungen und Zukünftige Überlegungen:
Derzeit gibt es keine Möglichkeit, diese Optimierung im C 11/14 explizit zu steuern Standards. Es gibt jedoch Diskussionen darüber, die std::atomic-API zu erweitern, um Programmierern mehr Kontrolle über solche Optimierungen zu geben. Dies könnte es Compilern ermöglichen, bei Bedarf Optimierungen durchzuführen, ohne die Ordnungsregeln zu verletzen.
Alternativer Ansatz:
Die Verwendung flüchtiger atomarer Variablen kann Compiler daran hindern, atomare Speicher zu optimieren. Dies ist jedoch keine narrensichere Lösung und kann in einigen Fällen dennoch zu unerwartetem Verhalten führen.
Das obige ist der detaillierte Inhalt vonWarum optimieren Compiler redundante atomare Schreibvorgänge nicht?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!