C# FCL堆栈级线程安全和it';s版本字段

C# FCL堆栈级线程安全和it';s版本字段,c#,.net,stack,fcl,C#,.net,Stack,Fcl,我在FCL中发现了一个奇怪的堆栈类实现。 如我所见,Stack类提供SyncRoot属性,旨在允许外部用户阻止整个集合并以线程安全的方式使用它。但是随着SyncRoot的出现,我发现了一个私有字段,它的版本在修改操作(Push、Pop、Clear)时按堆栈类递增。StackEnumerator类使用此字段检查在循环遍历集合时是否有任何更改。 但这真是令人惊讶!Everywhere堆栈类通过一元运算符++增加版本,而不使用联锁类。所以我不明白版本字段的意图是什么?我认为你是对的联锁。应使用增量。另

我在FCL中发现了一个奇怪的堆栈类实现。 如我所见,Stack类提供SyncRoot属性,旨在允许外部用户阻止整个集合并以线程安全的方式使用它。但是随着SyncRoot的出现,我发现了一个私有字段,它的版本在修改操作(Push、Pop、Clear)时按堆栈类递增。StackEnumerator类使用此字段检查在循环遍历集合时是否有任何更改。
但这真是令人惊讶!Everywhere堆栈类通过一元运算符++增加版本,而不使用联锁类。所以我不明白版本字段的意图是什么?

我认为你是对的<代码>联锁。应使用增量。另见