2010-03-05 3 views

답변

11

AppDomains는 기본값 당 자체 스레드를 가져 오지 않습니다. 기존 스레드를 사용하여 다른 AppDomain에서 코드를 실행하거나 AppDomain에서 새 스레드를 만드는 메서드를 호출 할 수 있습니다. 사실, 추가 스레드를 생성하지 않는 한 다른 도메인의 코드를 호출하면 프로세스의 주 스레드에서 코드가 실행됩니다. 에서

AppDomain documentation

하나의 프로세스에 를 실행할 수 있습니다

여러 응용 프로그램 도메인; 그러나 응용 프로그램 도메인과 스레드간에 일대일 상관 관계가 없습니다. 여러 스레드가 하나의 응용 프로그램 도메인에 속할 수 있으며, 주어진 스레드가 주어진 시간에, 하나의 응용 프로그램 도메인에 국한되지 않은 상태에서, 스레드는 하나의 응용 프로그램 도메인에서 실행됩니다.

예를 들어, 스레드를 생성하면 (또는 스레드 풀이보다 구체적으로 생성됩니다) 코드가 이러한 스레드에서 실행됩니다. 그러나 스레드 풀 스레드에서 AppDomains를 만드는 것이 좋습니다.

AppDomain을 언로드하면 AppDomain의 모든 스레드가 중단됩니다. 나는 솔직히 스레드 풀이 어떻게 반응 할 것인지 모른다. 언로드에 대한 자세한 내용 here.

3

앱 도메인은 스레드보다 크지 만 프로세스보다 작습니다. 당신은 그것들을 잠재적으로 여러 스레드들의 모음으로 생각할 수 있습니다. 앱 도메인이 다른 새로운 앱 도메인을 만드는 경우 새 앱 도메인은 자체 스레드를 갖게됩니다. 한 App 도메인의 스레드는 다른 App 도메인의 일부가 될 수 없으며 다른 App 도메인의 스레드와 직접 대화 할 수도 없습니다.

+0

왜 downvote? –

+3

_ "앱 도메인이 다른 앱 도메인을 새로 만들면 새로운 앱 도메인에 자체 스레드가 생깁니다."_. 내가 downvoter 아니에요, 그 진술은 실제로 일어나고있는 것 외에 조금입니다. 다른 AppDomain을 만들면 현재 스레드에서 실행됩니다. AppDomain을 자체 스레드에서 실행하려면 새 스레드를 새로 만들고 해당 스레드에서 새 AppDomain을 만들고 시작해야합니다. – Abel

관련 문제