Ich studiere das C#-Speichermodell für die gleichzeitige Programmierung.
Im MSDN gibt es einen Artikel zum C#-Speichermodell.
Es wird erklärt, dass flüchtiges Schreiben eine Release-Semantik hat, das heißt
Andere Prozessoren sehen die Auswirkung jeder vorherigen Operation vor der Auswirkung der Operation selbst.
Danach sind alle Speicheroperationen vor flüchtig write kann nach dem flüchtigen write nicht neu angeordnet werden. Und dies ermöglicht eine sperrenfreie Veröffentlichung von Speicheränderungen.
Aber ich bin auf diesen Blog-Beitrag aus dem Jahr 2010 gestoßen, in dem es heißt:
In C# sind alle Schreibvorgänge flüchtig (anders als beispielsweise in Java), unabhängig davon, ob Sie in ein flüchtiges oder ein nichtflüchtiges Feld schreiben.
Und ich denke, er hat Recht, wenn er denkt, dass zwei Threads auf einem schreiben Nichtflüchtige Felder aktualisieren den Speicher direkt nach Abschluss der Ausführung (auch wenn eine Race-Bedingung auftreten kann), anstatt diesen Wert im eigenen Cache zu behalten.
Aber bedeutet das, dass alle Hat der Schreibvorgang in C# eine Release-Semantik?
Ich studiere das C#-Speichermodell für die gleichzeitige Programmierung. Im MSDN gibt es einen Artikel zum C#-Speichermodell. Es wird erklärt, dass flüchtiges Schreiben eine Release-Semantik hat, das heißt
Andere Prozessoren sehen die Auswirkung jeder vorherigen Operation vor der Auswirkung der Operation selbst.
Danach sind alle Speicheroperationen vor flüchtig write kann nach dem flüchtigen write nicht neu angeordnet werden. Und dies ermöglicht eine sperrenfreie Veröffentlichung von Speicheränderungen. Aber ich bin auf diesen Blog-Beitrag aus dem Jahr 2010 gestoßen, in dem es heißt: In C# sind alle Schreibvorgänge flüchtig (anders als beispielsweise in Java), unabhängig davon, ob Sie in ein flüchtiges oder ein nichtflüchtiges Feld schreiben.
Und ich denke, er hat Recht, wenn er denkt, dass zwei Threads auf einem schreiben Nichtflüchtige Felder aktualisieren den Speicher direkt nach Abschluss der Ausführung (auch wenn eine Race-Bedingung auftreten kann), anstatt diesen Wert im eigenen Cache zu behalten. Aber bedeutet das, dass alle Hat der Schreibvorgang in C# eine Release-Semantik?
Ich habe auf dieser Website einige interessante Fragen (z. B. diese) zu den Sichtbarkeitseffekten von flüchtigen Variablen in Java gefunden, die aus diesem Absatz aus dem Buch „Java Concurrency in...
Ich habe eine Reihe von Objekten in einem Browserspiel, an dem ich arbeite. Jedes Objekt ist ein Teilchen und erhält eine zufällige Geschwindigkeit bei der Erstellung. Wenn sich jedoch beim Spielen...