Apartment 2

COM Apartment

COM ApartmentCOM의 Threading model에 대한 자료, 아래 사이트와 문서 자료로 정리한 것입니다. (DOIT, COM+, Essential COM의 Apartment내용을 보고 추가하고 Proxy / Stub을 추가 정리하자) COM을 사용할때 서버측에서는 일괄된 사용을 보장해야 한다. 위치 투명성을 보장하여 어디서든 호출 가능해야 하기 때문에 Proxy / Stub이 필요함과 동시에 재작된 클라이언트 어플리케이션에서 단일 쓰레드로 사용하거 멀티 쓰레드에서 사용하는 상황에서도 멀티쓰레드가 고려되지 않은 COM 오브젝트는 안전하게 구동되어야 한다.이에 Microsoft는 COM Thread model로 Apartment라는 것을 정의 한다. Apartment는 COM 오브젝트를 Thr..

아파트먼트 종류와 모델에 따른 반응성 차이

TNA에 대해 설명하기 전에 우선 STA와 MTA의 반응성과 대해 알아보자. STA의 경우 한 아파트먼트 안에 있는 모든 개체는 하나의 스레드를 통해서만 실행될 수 있다. 이러한 점은 STA 안에 여러 개의 객체가 존재하게 될 때 큰 문제를 지닌다. 이 STA에 속하지 않은 스레드로부터의 메서드 호출은 이 STA를 만든 스레드를 이용해 처리된다고 위에서 배웠다. 그렇다면 만약 STA에 속한 하나의 객체의 메서드를 호출하고 있다면 다른 객체에 대한 메서드 호출은 이 객체의 사용이 끝날 때 까지 기다려야 한다는 것을 쉽게 깨달을 수 있을 것이다. 이것은 STA가 보이지 않는 윈도우를 이용해 호출을 동기화 하기 때문이며 메시지 큐에 쌓인 메시지는 차례차례 처리된다. 이러한 점은 메서드가 블록킹 호출을 할 때 ..