2008. 7. 15. 07:49
ActiveX와 Application에서 Mutex 문제
2008. 7. 15. 07:49 in 3. Implementation/Windows API

문제 : MainThread에서 Mutext생성 후 wait 계열 함수로 소유권을 요청하고, 메인쓰레드에서 ActiveX를 생성하면, ActiveX 내에서 다시 동기화를 위해 Mutex를 생성한 후 소유권을 요청하는 데, 이 때 ActiveX 역시 소유권을 가짐. 의도하는 바는 ActiveX랑 메인쓰레드랑 동기화를 하려고 했으나, 아래 예제에서는 동기화가 되지 않음.
아래 첨부를 해결하자! (2003 빌드)
원인 :
ActiveX를 생성하는 Main Thread랑 ActiveX 컨트롤이 같은 쓰레드이므로 Wait 계열 함수에서 항상 뮤텍스에 대한 소유권을 가짐
해결 :
MainThread에서 CreateThread 함수를 이용하여 쓰레드를 생성하고 그 쓰레드 내에서 뮤텍스를 생성하면 메인쓰레드에서 Wait 계열 함수로 소유권을 요청해도 소유권이 반환되지 않으므로 정상적인 동기화가 동작함.