Vla*_*den 10 concurrency multithreading .net-4.0 thread-safety c#-4.0
MSDN上ConcurrentBag的描述不清楚:
当订购无关紧要时,袋子可用于存放物品,与套装不同,袋子支持重复.ConcurrentBag是一个线程安全的包实现,针对同一个线程将生成和消耗存储在包中的数据的情况进行了优化.
我的问题是它是线程安全的,如果在Parallel.ForEach中使用ConcurrentBag这是一个很好的做法.
例如:
private List<XYZ> MyMethod(List<MyData> myData)
{
var data = new ConcurrentBag<XYZ>();
Parallel.ForEach(myData, item =>
{
// Some data manipulation
data.Add(new XYZ(/* constructor parameters */);
});
return data.ToList();
}
Run Code Online (Sandbox Code Playgroud)
这样我就不必使用常规List在Parallel.ForEach中使用同步锁定.
非常感谢.