我使用下面的代码列表<T>线程安全
var processed = new List<Guid>();
Parallel.ForEach(items, item =>
{
processed.Add(SomeProcessingFunc(item));
});
是上面的代码线程安全的?是否有处理列表被破坏的机会?还是应该在添加之前使用锁定?
var processed = new List<Guid>();
Parallel.ForEach(items, item =>
{
lock(items.SyncRoot)
processed.Add(SomeProcessingFunc(item));
});
谢谢。
的ConcurrentBag你看MSDN?这里:http://msdn.microsoft.com/en-us/library/6sh2ey19.aspx#c9721fa0-1cd9-4a21-818c-98d164c9fc14 – 2011-02-16 18:25:42
请参阅http://stackoverflow.com/questions/4779165/parallel-foreach-loop余的行为。 – mellamokb 2011-02-16 18:26:05
@Martinho:是的。我读到List不是线程安全的。但我无法理解,即使多个线程正在添加到列表中,也会损坏列表。 –
stackoverflowuser
2011-02-16 18:41:11