2012-03-31 2 views
0

최근에 스레드에 대해 공부하기 시작했습니다. 처음부터 생각하고 MSDN 설명서를 읽기 시작했습니다. 응용 프로그램마다 별도의 ApplicationDomain에 대해 읽어보십시오. 그러나이 링크에서 ApplicationDomain and Threads이 언급되어 있습니다.ApplicationDomain 및 Thread

특정 스레드가 특정 응용 프로그램 도메인에서 실행될 수 있으며 특정 스레드가 단일 응용 프로그램 도메인에만 국한되지 않을 수 있습니다. 즉, 스레드가 응용 프로그램 도메인 경계를 넘나들 수 있습니다.

사용자가 스레드를 생성하고 응용 프로그램 도메인을 넘을 수 있다면 다른 응용 프로그램 도메인의 개체 또는 메모리 참조를 참조 할 수 있습니까 ??? 내가 틀렸다면 나를 인도 해주세요.

+0

당신이 잘못되지 않습니다. 진짜 질문을하십시오. –

답변

0

응용 프로그램 도메인과 스레드간에 일대일 관계가 없습니다. 스레드가 응용 프로그램 도메인 경계를 넘을 수는 있지만 스레드는 한 번에 하나의 응용 프로그램 도메인에서 실행됩니다.

코드는 하나의 응용 프로그램에서 실행 :

은 MSDN에서 아래 정보 (http://msdn.microsoft.com/en-us/library/2bh4z9hs%28v=vs.90%29.aspx)를 참조하십시오 다른 응용 프로그램의 코드 나 리소스에 직접 액세스 할 수 없습니다. 공용 언어 런타임은 다른 응용 프로그램 도메인에있는 개체 간의 직접 호출을 방지하여 이러한 격리를 시행합니다. 도메인간에 전달되는 객체는 프록시에 의해 복사되거나 액세스됩니다. 개체가 복사되면 개체에 대한 호출이 로컬입니다. 즉, 참조 된 호출자와 개체가 모두 동일한 응용 프로그램 도메인에 있습니다. 프록시를 통해 객체에 액세스하는 경우 객체에 대한 호출은 원격입니다. 이 경우 호출자와 참조되는 객체는 서로 다른 응용 프로그램 도메인에 있습니다. 교차 도메인 호출은 두 프로세스 간 또는 두 시스템 간 호출과 동일한 원격 호출 인프라를 사용합니다.

또한 다음 문서 유용 할 수 있습니다 : http://www.codeproject.com/Articles/26148/Beginners-Guide-to-Threading-in-NET-Part-1-of-n

0

스레드가 코드를 실행하면 응용 프로그램 특정 유형 또는 객체를 참조 할 수 없습니다.

스레드의 대부분의 속성은 읽기 전용이며 매우 특정한 것 (예 : CurrentCultre)은 사용자 지정 유형을 전달하는 데 사용할 수 없습니다. 특정 스레드와 데이터를 연관시키는

유일한 방법은 다른 응용 도메인에서 전달하고 매우 특수한 경우에만 유용하지 않을 물론 어느 ThreadLocal Storage 을 사용하는 것이다.

0

대답은 '예'입니다. 모든 스레드는 임의의 객체를 가리킬 수있는 스택을 가지고 있습니다. 스레드 스택의 로컬 변수는 GC 루트이므로 스레드가 살아있는 한 모든 것을 유지합니다.