Haben Eigenschaften einen flüchtigen Effekt?
Im Code unten wirdread1
sei immer gleichread2
, zur Verfügung gestelltes EigentumFlag
kann von anderen Threads geändert werden? Anlass zur Sorge ist dasFlag
kann inliniert werden.
private bool Flag {get; set;}
public void MultithreadedMethod()
{
var read1 = Flag;
/* some more code */
var read2 = Flag;
}
UPD: Möglicherweise ändert sich ein anderer ThreadFlag
Wert während/* some more code */
Ausführung. In diesem Fallread1
sollte anders sein alsread2
. Wird esimmer der Fall sein? Wird nicht inliniert, verwandeln Sie die Eigenschaft in ein nichtflüchtiges Feld, das dazu führtread1
gleich sein mitread2
TrotzdemFlag
wurde zwischen den Lesevorgängen geändert?