在下面的代码中将read1始终等于read2,提供的属性Flag可以从其他线程更改吗?这里担心的是Flag可能会被内联。
private bool Flag {get; set;}
public void MultithreadedMethod()
{
var read1 = Flag;
/* some more code */
var read2 = Flag;
}
UPD:其他一些线程可能会在执行Flag期间更改 ' 值。/* some more code */在这种情况下read1应该不同于read2. 会一直这样吗?尽管事实在读取之间发生了变化,但内联不会将属性变成一个非易失性字段,这将导致read1等于?read2Flag