当需要线程安全集合(例如 Set)时,当今的标准是什么?
我自己同步它,还是有一个本质上线程安全的集合?
.NET 4.0 Framework 在 .NET 4.0 Framework 中引入了几个线程安全集合System.Collections.Concurrent 命名空间 http://msdn.microsoft.com/en-us/library/system.collections.concurrent.aspx:
并发包 http://msdn.microsoft.com/en-us/library/dd381779.aspx
表示线程安全、无序的对象集合。
ConcurrentDictionary http://msdn.microsoft.com/en-us/library/dd287191.aspx
表示可以被多个线程并发访问的线程安全的键值对集合。
并发队列 http://msdn.microsoft.com/en-us/library/dd267265.aspx
表示线程安全的先进先出 (FIFO) 集合。
并发堆栈 http://msdn.microsoft.com/en-us/library/dd267331.aspx
表示线程安全的后进先出 (LIFO) 集合。
.NET Framework 中的其他集合默认情况下不是线程安全的,需要为每个操作锁定:
lock (mySet)
{
mySet.Add("Hello World");
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)