Listar <T> segurança de thread

Estou usando o código abaixo

var processed = new List<Guid>();
Parallel.ForEach(items, item => 
{
    processed.Add(SomeProcessingFunc(item));
});

O segmento de código acima é seguro? Existe uma chance de a lista processada ser corrompida? Ou devo usar um cadeado antes de adicionar?

var processed = new List<Guid>();
Parallel.ForEach(items, item => 
{
    lock(items.SyncRoot)
        processed.Add(SomeProcessingFunc(item));
});

obrigado.

questionAnswers(6)

yourAnswerToTheQuestion