Is Parallel.ForEach no ConcurrentBag <T> thread safe
A descrição do ConcurrentBag no MSDN não está clara:
s @Bags são úteis para armazenar objetos quando o pedido não importa e, diferentemente dos conjuntos, os sacos suportam duplicatas. ConcurrentBag é uma implementação de bolsa segura para threads, otimizada para cenários em que a mesma thread estará produzindo e consumindo dados armazenados na bols
Minha pergunta é thread thread safe e se essa é uma boa prática usar ConcurrentBag em Parallel.ForEac
Por exemplo
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();
}
Desta forma, não preciso usar o bloqueio de sincronização no Parallel.ForEach usando a lista comu
Muito obrigado