2008-09-26 3 views

답변

24

기본적으로 많이는 아니지만 ASP.NET과 IIS가 I/O 대기 개체를 할당하고 네트워크를 통해 통신하고 데이터를 전송하는 경합 및 대기 시간을 관리하는 방법에 관한 것입니다.

I/O 스레드는 이름에서 알 수 있듯이 I/O를 수행하고 "긴"시간 (수백 밀리 초) 동안 기다려야하기 때문에 따로 설정됩니다. 또한 최적화되고 다르게 사용되어 Windows 커널의 I/O 완료 포트 기능을 이용할 수 있습니다. 단일 I/O 스레드는 처리량을 유지하기 위해 여러 완료 포트를 관리 할 수 ​​있습니다.

Windows에는 I/O 차단을 처리 할 수있는 많은 기능이 있지만 ASP.NET /.NET에는 "스레드"라는 일반 개념이 있습니다. ASP.NET은 OS의 관리되지 않는 스레드 기능을 사용하여 I/O를 최적화 할 수 있습니다. .NET에서 제공하는 많은 기능을 잃어 버리면 모든 스레드에 대해 항상이 작업을 수행하고 싶지는 않습니다. 스레드 사용 방법을 구별하는 이유가 여기에 있습니다.

작업자 스레드는 일반적인 "작업"또는 단순한 코드/처리가 발생하는 스레드입니다. 작업자 스레드는 많은 것을 막거나 대기하지 않을 것이므로 단기간에 실행되므로 처리 능력과 처리량을 최대화하기 위해보다 적극적인 스케줄링이 필요합니다.

[편집] : I/O를 스레드가 옛날 방식의 ASP.NET처럼 이 보인다 ... http://blogs.msdn.com/ericeil/archive/2008/06/20/windows-i-o-threads-vs-managed-i-o-threads.aspx

10

그냥 chadmyers에 추가 : 나는 또한이 질문에 특히 관련이 링크를 발견 IIS 5.0에서 서비스 요청,

"요청은 전형적으로 는 서비스 I/O 스레드 또는 스레드를 통해 요청이 비동기 쓰기를 사용하여 작업자 과정에 파견되어 있기 때문에 비동기 I/O를 수행 s를 명명 된 파이프 수 있습니다. "

IIS6.0이 변경되었습니다.

는 "따라서 모든 요청은 이제 CLR 스레드 풀에서 결코 I/O 스레드에 그려진 작업자 스레드에 의해 서비스됩니다."

출처 : http://msdn.microsoft.com/hi-in/magazine/cc164128(en-us).aspx

관련 문제