2008-09-26 2 views

ответ

24

В целом не так много, это все о том, как ASP.NET и IIS выделяют объекты ожидания ввода-вывода и управляют конфликтом и латентностью передачи по сети и передачи данных.

Вводы ввода-вывода отложены как таковые, потому что они будут делать ввод-вывод (как следует из названия) и, возможно, придется ждать «длинных» периодов времени (сотни миллисекунд). Они также могут быть оптимизированы и использованы по-разному, чтобы использовать возможности портов ввода-вывода в ядре 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

10

Просто, чтобы добавить к chadmyers ... Похоже, I/O Темы был старый способ ASP.NET обслуживаемые запросы,

«запросы в IIS 5.0, как правило, обслуживается через ввода/вывода нитей или нитей выполнения асинхронного ввода/вывода, поскольку запросы отправляются в рабочий процесс с помощью асинхронного записи s до именованной трубы. "

с IIS6.0 это изменилось.

«Таким образом, все запросы в настоящее время обслуживается рабочих потоков, взятых из пула потоков CLR и никогда на нитях ввода/вывода.»

Источник: http://msdn.microsoft.com/hi-in/magazine/cc164128(en-us).aspx