【发布时间】:2012-01-09 23:10:56
【问题描述】:
我遍历一个连接字符串数组,并在每个循环中提取一些信息并添加到列表中。现在,我想使用 Parallel 库使其成为多线程的,但我不确定该库是否保证写入列表是线程安全的,或者我是否需要使用锁定:
List<SomeType> list = new List<SomeType>();
settings.AsParallel().ForAll(setting =>
{
list.AddRange(GetSomeArrayofSomeType(setting)); /// DO I NEED TO DO LOCKING HERE???
})
【问题讨论】:
-
您为什么不首先避免这种复杂性,并预先选择要添加到
list的设置? -
我不向列表中添加设置,我为每个设置检索一些数组,并将该数组的内容添加到主列表中。检索可能是一个漫长的过程,因此我需要多线程
标签: c# multithreading thread-safety parallel-extensions