Почему блокировать объект, который мы собираемся изменить, — плохая практика?

Почему использование блокировки, как в следующем коде, является плохой практикой, я предполагаю, что это плохая практика, основываясь на ответах в этом вопросе SO здесь

private void DoSomethingUseLess()
{
    List otherProductList = new List();
    Parallel.ForEach(myOriginalProductList, product =>
        {
           //Some code here removed for brevity
           //Some more code here :)
            lock (otherProductList)
            {
                otherProductList.Add((IProduct)product.Clone());
            }
        });
}

В ответах над там упоминается, что это плохая практика, но не говорится, почему

Примечание:Пожалуйста, не обращайте внимания на полезность кода, это просто для примера, и я знаю, что это совсем не полезно

44
задан Community 23 May 2017 в 12:34
поделиться