Я не думаю, что блокировка списка вызовет сериализацию / десериализацию списка, поскольку блокировка происходит в закрытом поле, доступном для всех объектов (syncBlockIndex).Однако рекомендуемый способ блокирования - это создание личного поля, которое вы будете использовать для блокировки:
object _lock = new object();
Это потому, что вы можете контролировать то, что блокируете.Если вы публикуете доступ к своему списку через свойство, то код вне вашего контроля может блокировать этот объект и, таким образом, создавать тупиковую ситуацию.
Что касается PLinq, я думаю, что решение использовать его зависит отна что похож ваш хост и загрузка.Например, в ASP.NET PLINQ более требователен к процессору , что позволит сделать это быстрее, но за счет отказа от обработки других веб-запросов.Синтаксис, по общему признанию, намного чище.