Ответ 1
В основном не так много, все о том, как ASP.NET и IIS выделяют объекты ожидания ввода-вывода и управляют конфликтом и латентностью передачи по сети и передачи данных.
Потоки ввода-вывода откладываются как таковые, потому что они будут делать I/O (как следует из названия) и, возможно, придется ждать "длинных" периодов времени (сотни миллисекунд). Они также могут быть оптимизированы и использованы по-разному, чтобы использовать возможности портов ввода-вывода в ядре Windows. Один поток ввода-вывода может управлять несколькими портами завершения для поддержания пропускной способности.
В Windows есть много возможностей для работы с блокировкой ввода-вывода, тогда как у ASP.NET/.NET есть простая концепция "Thread". ASP.NET может оптимизировать для ввода-вывода, используя большее количество неуправляемых возможностей потоковой передачи в ОС. Вы бы не хотели делать это все время для каждого потока, поскольку вы теряете много возможностей, которые дает .NET, поэтому существует различие между тем, как потоки предназначены для использования.
Рабочие потоки - это потоки, на которых происходит обычная "работа" или просто простой код/обработка. Рабочие потоки вряд ли будут блокировать много или ждать чего-либо и будут работать в короткие сроки и, следовательно, требуют более агрессивного планирования, чтобы максимизировать вычислительную мощность и пропускную способность.
[Изменить]: Я также нашел эту ссылку, которая особенно актуальна для этого вопроса: http://blogs.msdn.com/ericeil/archive/2008/06/20/windows-i-o-threads-vs-managed-i-o-threads.aspx