(我对 .NET CLR 感兴趣)
当一个线程更改变量引用的对象而另一个线程正在对原始对象执行方法时,究竟会发生什么?
例如,假设该类型Foo
有一个类型为 'Bar' 的变量Bar
,并且Bar
没有类级别的状态(至少现在,我想让这个场景保持简单):
// Thread 1
foo.Bar = new Bar();
foo.Bar.SomeMethod();
与此同时,在这完成执行之前......
// Thread 2
foo.Bar = new Bar();
在线程 1 上(曾经?)执行的方法会发生什么?它需要完成的所有事情都已经在堆栈上了吗?
如果线程 2 这样做会改变事情吗?
foo.Bar = null;