본문 바로가기

나래온 1기(~2012.6)/나래온 간단잠금 개발과정

뮤텍스를 써 보자! - 좌충우돌 뮤텍스 사용기

나래온 간단잠금 다운로드 : http://www.delmadang.com/community/bbs_view.asp?bbsNo=21&bbsCat=0&st=&keyword=&indx=430350&keyword1=&keyword2=&page=1

뮤텍스는 프로세스끼리 통신 수단이라고 한다.
크리티컬 섹션은 반대로 한 프로세스 내의 쓰레드 끼리의 통신 수단이라고 하고...

어쨌든! 필자는 프로세스 중복을 확인할 때 이미 뮤텍스를 한 번 사용한 바가 있다. 사실 이 것은 뮤텍스를 알아서 사용한 것이 아니라 다른걸 참고하다 보니 그렇게 된 것이었다.
그런 상황에서 현재 뮤텍스를 다시 꺼내들 일이 생겼다. 진짜로 프로세스간 통신이 필요한 상황이 온 것이다.

그것은 바로 중복실행 시 메인폼을 켜는 일이다. 말하자면 네이트온이 켜져 있는 상황에서 다시 네이트온을 실행하면 네이트온이 두 개 켜지는 대신 이미 켜져있던 네이트온 창이 다시 뜨는 걸 구현하려 한 것이다.

뮤텍스는 사실 제대로 구현해야 하는 것 중 하나지만, 나는 뮤텍스를 잘 사용할 줄 모르기 때문에 다음과 같이 구현했다.(연한 청색 프로세스가 중복실행된 프로세스, 연녹색 프로세스가 원래 실행되고 있던 프로세스)

1. 중복 실행 확인 중 먼저 실행된 프로세스를 발견
2. ComLockerAppearMainForm 뮤텍스 생성
3. 원래 프로세스에서 저 뮤텍스를 발견
4. 메인 폼을 강조함
5. ComLockerReady 뮤텍스 생성
6. 처음 ComLockerAppearMainForm 뮤텍스를 생성한 프로세스에서 원조 프로세스의 ComLockerReady 뮤텍스 발견
7. 중복 실행된 프로세스 종료