Возможно, я подзабыл .Net, но мне представляется, что первый наивный вариант и второй, слямзенный с MSDN, сравнивать не вполне корректно: большой объем кода во втором случае привнесен еще и из-за того, что число заданий ставится в зависимость от числа процессоров. Но разве нельзя было положить в пул потоков все size делегатов (так же, как клали size потоков в наивном варианте)? Поскольку под делегат не создается поток сразу же, то по ресурсоемкости такой вариант должен быть близок к варианту из MSDN. А код в этом случае будет весьма мало отличаться от основанного на TPL.
В чем же тогда в этом примере преимущество TPL? Лишь в том, что вместо глобальной очереди задач используется локальная очередь?
Специалист — это варвар, невежество которого не всесторонне :)