Descrição simples de threads de trabalho e E / S no .NET

É muito difícil encontrar uma descrição detalhada, mas simples, dos threads de trabalho e de E / S no .NET

O que está claro para mim em relação a este tópico (mas pode não ser tecnicamente preciso):

Threads de trabalho são aqueles quedevemos empregar CPU para o seu trabalho;Threads de E / S (também chamados de "threads da porta de conclusão")devemos empregar drivers de dispositivo para o seu trabalho e, essencialmente, "não fazer nada", apenas monitorar a conclusão de operações sem CPU.

O que não está claro:

Embora o método ThreadPool.GetAvailableThreads retorne o número de threads disponíveis dos dois tipos, parece que não há API pública para agendar o trabalho para o thread de E / S. Você só pode criar manualmente o segmento de trabalho no .NET?Parece que um único encadeamento de E / S pode monitorar várias operações de E / S. É verdade? Se sim, por que o ThreadPool tem tantos threads de E / S disponíveis por padrão?Em alguns textos, li esse retorno de chamada, acionado após a conclusão da operação de E / S ser realizada pelo encadeamento de E / S. É verdade? Não é um trabalho para o segmento do trabalhador, considerando que esse retorno de chamada é uma operação da CPU?Para ser mais específico - as páginas assíncronas do ASP.NET usam threads de E / S? Qual é exatamente o benefício de desempenho em alternar o trabalho de E / S para separar encadeamentos em vez de aumentar o número máximo de encadeamentos de trabalho? É porque um único encadeamento de E / S monitora várias operações? Ou o Windows faz uma troca de contexto mais eficiente ao usar threads de E / S?

questionAnswers(4)

yourAnswerToTheQuestion