2013-10-20 3 views
8

.NET에서 관리되는 스레드를 만드는 경우 (Thread.Start()을 호출하여) 정확히 하나의 네이티브 스레드가 백그라운드에서 만들어 지는지 알고 싶습니다. 관리되는 스레드에 해당 원시 스레드가 있습니까? "예"인 경우 관리 대상 스레드가 대기 또는 절전 모드 일 때 해당 원시 스레드도 대기 또는 절전 중임을 의미합니까?관리되는 각 스레드에는 고유 한 고유 스레드가 있습니까?

+0

왜 다른 스레드라고 생각합니까? –

+1

@BlackFrog : 그것은 정당한 질문입니다. 왜 두 사람이 항상 같은 것을 보장한다면 * "관리 된 쓰레드"와 "네이티브 쓰래드"를 구별하는 것은 어떨까요? 영업 이익은 그 구별을 가지고 오지 않았다; [Microsoft] (http://msdn.microsoft.com/en-us/library/74169f59.aspx "MSDN 문서 'Windows에서 관리되는 스레드와 관리되지 않는 스레드'). – stakx

답변

10

예, .NET 스레드는 모든 현재 CLR 호스트의 기본 운영 체제 스레드에 매핑됩니다.

광섬유처럼 ICLRTaskManager interface을 통해 호스팅 API의 다른 항목에 매핑하는 옵션이 있지만 실제로는 메인 스트림 호스트에 구현되지 않습니다. .NET 2.0 시간대의 SQL Server 팀은이 작업을 시도했지만 프로젝트를 충분히 신뢰할 수 없을 때 포기했습니다. 이것은 다시 시도되지 않았습니다. 기술적으로는 비 관리 프로그램에 의해 시작된 사용자 지정 호스팅 CLR을 실행할 수 있지만이 매핑을 구현했지만 확률은 낮습니다.

관련 문제