Учитывает ли параллельная задача библиотека (или PLINQ) другие процессы?

В частности, я смотрю на использование TPL для запуска (и ожидания) внешних процессов. Проверяет ли TPL общую загрузку машины (как процессора, так и ввода-вывода), прежде чем принять решение о запуске другой задачи (следовательно, в моем случае - другого внешнего процесса)?

Например:

У меня есть около 100 мультимедийных файлов, которые необходимо кодировать или транскодировать (например, из WAV в FLAC или из FLAC в MP3). Кодирование выполняется путем запуска внешнего процесса (например, FLAC.EXE или LAME.EXE). Каждый файл занимает около 30 секунд. Каждый процесс в основном связан с процессором, но там есть некоторые операции ввода-вывода. У меня 4 ядра, поэтому в худшем случае (транскодирование путем передачи декодера в кодер) все еще используются только 2 ядра. Я хотел бы сделать что-то вроде:

Parallel.ForEach(sourceFiles,
    sourceFile =>
        TranscodeUsingPipedExternalProcesses(sourceFile));

Будет ли это запустить 100 задач (и, следовательно, 200 внешних процессов, конкурирующих за процессор)? Или он увидит, что процессор занят и делает только 2-3 за раз?

Ответы на вопрос(1)

Ваш ответ на вопрос