SpinLock和只读字段

sll*_*sll 9 .net c# multithreading .net-4.0 c#-4.0

只需阅读有关新功能SpinLockMSDN页面,并且无法理解以下语句背后的想法:.NET 4.0

不要将SpinLock实例存储在只读字段中.

我的感觉是,这在某种程度上与价值类型细节有关,但不确定究竟是什么和为什么.任何人都可以为这一点带来更多亮点吗?

Bro*_*ass 14

根本问题是,readonly当您在其上调用非静态方法并在副本上执行该方法时,C#编译器会创建值类型字段的副本 - 因为该方法可能具有更改结构值的副作用 - readonly字段不允许.

有关进一步说明,请参阅"变异只读结构".

  • 四年后,我没有改变看法。仅当您期望有人创建数千个自旋锁时,才使其成为支柱,而且我只是看不到这种情况。 (2认同)