Devo usar ThreadPools ou Task Parallel Library para operações IO-bound

Em um dos meus projetos que é um agregador, analiso feeds, podcasts e outros da Web.

Se eu usar uma abordagem seqüencial, dado que um grande número de recursos, leva muito tempo para processar todos eles (devido a problemas de rede e coisas semelhantes);

foreach(feed in feeds)
{
   read_from_web(feed)
   parse(feed)
}

Então, eu quero implementar a simultaneidade e não pude decidir se eu deveria basicamente usar o ThreadPools para processar com threads de trabalho ou apenas confiar no TPL para classificá-lo.

O ThreadPools, com certeza, cuidará do trabalho para mim com os threads de trabalho e eu receberei o que espero (e em ambientes de CPU com vários núcleos, os outros núcleos também serão utilizados também).

Mas ainda quero considerar o TPL também, pois é o método recomendado, mas estou um pouco preocupado com isso. Antes de tudo, sei que o TPL usa o ThreadPools, mas adiciona uma camada adicional de tomada de decisão. Estou preocupado principalmente com a condição de que um ambiente de núcleo único esteja presente. Se não estou errado, o TPL começa com um número de threads de trabalho igual ao número de núcleos de CPU disponíveis no início e no início da versão. Receio que o TPL produza resultados semelhantes aos da abordagem sequencial para o meu caso vinculado a IO.

Portanto, para operações vinculadas à IO (no meu caso, lendo recursos da Web), é melhor usar o ThreadPools e controlar as coisas, ou melhor, confiar apenas no TPL? O TPL também pode ser usado em cenários vinculados à IO?

Atualizar: Minha principal preocupação é que -em uma CPU de núcleo único O ambiente da TPL se comportará como uma abordagem seqüencial ou ainda oferecerá simultaneidade? Eu já estou lendoProgramação paralela com Microsoft .NET e então olivro mas não conseguiu encontrar uma resposta exata para isso.

Nota: esta é uma reformulação da minha pergunta anterior [É possível usar simultaneidade de thread e paralelismo? ], que foi bastante redigido errado.

questionAnswers(6)

yourAnswerToTheQuestion