C# 中 ConcurrentDictionary 一定线程安全吗? (2)

正如官方文档上所说的那样,ConcurrentDictionary 的所有公共和受保护的成员都是线程安全的,可从多个线程并发调用。但是,通过一个由 ConcurrentDictionary 实现的接口的成员(包括扩展方法)访问时,并不是线程安全的,此时要特别注意。

如果需要一个包含字典所有项的单独集合,可以通过调用 ConcurrentDictionary.ToArray 方法得到,千万不能使用扩展方法 ToList,因为它不是线程安全的。

参考:

ConcurrentDictionary Is Not Always Thread-Safe

https://docs.microsoft.com/en-us/dotnet/api/system.collections.concurrent.concurrentdictionary-2 ConcurrentDictionary<TKey,TValue> Class

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wspzzy.html