gpt4 book ai didi

c#-3.0 - 为什么SynchronizedCollection 不会在IEnumerable.GetEnumerator()上锁定

转载 作者:行者123 更新时间:2023-12-04 18:53:56 24 4
gpt4 key购买 nike

为什么SynchronizedCollection<T>IEnumerable.GetEnumerator()的显式实现中未获得对SyncObj的锁定

  IEnumerator IEnumerable.GetEnumerator()
{
return this.items.GetEnumerator();
}

隐式实现确实获得了SyncOb的锁(由反射器验证)。

在此集合的foreach循环期间可能会出现问题。一个线程可能已获取锁,而另一个线程可能会尝试使用foreach读取它?

最佳答案

因为类无法知道何时使用迭代器完成了客户端代码。这是System.Collection类上的MSDN Library文档始终警告迭代集合不是线程安全的原因之一。

尽管他们似乎忘记了在SynchronizedCollection的文章中提及这一点。具有讽刺意味的...

关于c#-3.0 - 为什么SynchronizedCollection <T>不会在IEnumerable.GetEnumerator()上锁定,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1918061/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com