Sind alle C#-Schreibvorgänge „flüchtig“?C#

Ein Treffpunkt für C#-Programmierer
Guest
 Sind alle C#-Schreibvorgänge „flüchtig“?

Post by Guest »

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?

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post