¿La Biblioteca Paralela de Tareas (o PLINQ) tiene en cuenta otros procesos?

En particular, estoy mirando el uso de TPL para iniciar (y esperar) procesos externos. ¿El TPL analiza la carga total de la máquina (CPU y E / S) antes de decidir iniciar otra tarea (por lo tanto, en mi caso, otro proceso externo)?

Por ejemplo:

Tengo unos 100 archivos multimedia que necesitan ser codificados o transcodificados (por ejemplo, de WAV a FLAC o de FLAC a MP3). La codificación se realiza iniciando un proceso externo (por ejemplo, FLAC.EXE o LAME.EXE). Cada archivo tarda unos 30 segundos. Cada proceso está principalmente vinculado a la CPU, pero hay algunas E / S allí. Tengo 4 núcleos, por lo que el peor de los casos (transcodificar al conectar el decodificador al codificador) todavía solo usa 2 núcleos. Me gustaría hacer algo como:

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

¿Esto iniciará 100 tareas (y por lo tanto 200 procesos externos que compiten por la CPU)? ¿O verá que la CPU está ocupada y solo hace 2-3 a la vez?

Respuestas a la pregunta(3)

Su respuesta a la pregunta