Mutex 기반 동기화  시스템프로그래밍 

2013.04.17. 15:40  수정  삭제

복사http://blog.naver.com/pwk0810/40187276800

전용뷰어 보기

  • 커널 모드 동기화 방법
  • 유저 모드에 비하면 느리다 ( 커널 모드 -> 유저모드 -> 커널 모드로 변환되어야 한다 )
  • 유저모드에서 제공받지 못하는 기능을 제공받는다.
  • 그러나 느리다. 그래서 게임 서버에서는 거의 사용하지 않는다.
  • 뮤텍스는 기본적으로 자동 리셋 모드로 동작한다.
    • bInitialOwner:   FALSE(크리티컬 섹션처럼 먼저 차지하는 사람이 임자 )
    • bInitialOwner : TRUE (뮤텍스를 생성하는 쓰레드가 먼저 기회를 얻는다 )
    • 대기하고 있는 스레드중 어떤 쓰레드가 실행 상태로 바뀌게 될지 알수 없다는 의미이다.
    • 실행순서를 동기화한다는 측면에서의 접근은 역시 모호? 
  • 누군가에 의해 획득될때 sIgnaled 상태에 놓인다.
  • WaitForSingleObject 함수를 통해서 임계 영역에 진입을 위한 뮤텍스 획득 용도로 사용된다.
      • 인자로 전달된 핸들의 커널 오브젝트가 Signaled 상태가 되어서 반환하는 경우, 해당 커널 오브젝트를 Non-Signaled 상태로 변경함.

CreateMutex( LPSECURITY_ATTIRBUTES lpMutexAttributes,
                   BOOL bInitialOwner,
                   LPCSTR lpName )

ReleaseMutex(hMutex) : 뮤텍스를 반환할 때

CloseHandle() :  리소스 해제, 핸들 반환


Posted by 뉴암스테르담
l