2014-06-06 1 views
1

이 페이지 http://msdn.microsoft.com/en-us/library/zf749bat(v=vs.110).aspx은 CLR에 의해보고 된 다른 스레드 번호에 대해 이야기합니다. 물리적, 논리적 및 인식.CLR 인식 스레드

누군가가 CLR에 의해 스레드가 "인식"된다는 것을 설명 할 수 있습니까?

왜 물리 스레드와 논리 스레드가 모두 30인데 인식 된 스레드가 최대 2가 될까요?

+0

해당 페이지에 대한 설명은 매우 분명합니다. 너 이해 하지마? 인식 된 스레드는 연관된 관리되는 스레드 객체가있는 스레드입니다. 그것은 런타임에 호출 된 다른 응용 프로그램에서 만들 수 있습니다. –

+0

그래, 나는 그것을 잘 읽지 못했다. 나는 그들이 정의와 관련된 관리 객체를 가지고 있다는 사실을 읽고, 내가 논리적 인 쓰레드보다 더 적은 것을 가질 수 있었는지 혼란스러워했다. 마지막 문장은 실제로 그룹을 정의하는 문장입니다 (CLR이 작성하지 않은 스레드). – innominate227

답변

5

CLR은 프로세스 내에서 실행되는 모든 스레드를 반드시 인식하지 않습니다. CreateThread()로 원시 코드에 의해 시작된 스레드에 대해서는 아무것도 알 수 없습니다. COM 서버 또는 CLR을 호스팅하는 기본 프로그램이 그 일반적인 예입니다. .NET 클래스, System.DirectoryServices 및 System.Management에 의해 래핑 된 COM 서버가 많이 있습니다.

이러한 스레드가 관리 코드로 호출 할 때 이벤트 또는 콜백이 일반적인 경우이를 처리해야합니다. 또한 쓰레기를 수집하거나 CAS 특성을 찾을 때 관리 대상 개체를 찾기 위해 해당 스레드에서 스택 워크를 수행해야하기 때문에.

이 시점에서이 알 수없는 네이티브 스레드는 "인식 된"스레드가됩니다. 이 값에 대해 "2"를 보는 것은 특별한 의미가 없습니다.

관련 문제