본문 바로가기

뮤텍스

쓰레드(Thread) 동기화 예제 소스 메모리 접근 동기화 : 1. 크리티컬 섹션(Critical Section) 기반의 동기화 - 유저 모드 2. 인터락 함수(Interlocked Family Of Function) 기반의 동기화 - 유저 모드 3. 뮤텍스(Mutex) 기반의 동기화 - 커널 모드 4. 세마포어(Semaphore) 기반의 동기화 - 커널 모드 5. 이름있는 뮤텍스(Named Mutex) 기반의 프로세스 동기화 - 커널 모드 실행 순서의 동기화 : 1. 이벤트 기반의 동기화 2. 이벤트 + 뮤텍스 동기화 더보기
쓰레드(Thread) 실행순서 동기화 이벤트(Event) 기반 동기화 : 개념 : 생산자는 문자열을 생성한다(입력받는다), 소비자는 문자열을 소비한다(출력한다) 생산자가 문자열을 생성하고 나면, 이 상태를 감지한 소비자가 문자열을 가져가 소비한다. 이벤트 커널 오브젝트의 특성 : 1. 이벤트 커널 오브젝트는 파라미터에 의해 Signaled or Non-Signaled 상태로 생성된다. 2. 프로그래머의 요청에 의해 Signaled 상태가 된다. 3. 자동 리셋 모드 일시 WaitForSingleObject 함수 호출로 Signaled -> Non-Signaled 상태로 변경된다. 수동 리셋 모드 일시 추가로 ResetEvent 함수를 사용한다. 사용법 : HANDLE CreateEvent( LPSECURITY_ATTRIBUTES lpEven.. 더보기
쓰레드(Thread) 메모리 접근 동기화 1. 크리티컬 섹션 기반의 동기화(유저 모드) : 개념 : 열쇠(Critical Section)를 생성한다. 쓰레드가 임계 영역에 접근하기 위해서는 열쇠를 얻어야 한다. 열쇠를 얻어 임계 영역에 접근한 쓰레드는 일을 마친후 다음 쓰레드를 위해 열쇠를 반환한다. 사용법 : CRITICAL_SECTION gCriticalSection; // 열쇠를 생성한다 // 크리티컬 섹션 오브젝트 선언후에는 반드시 초기화 해야한다. void InitializeCriticalSection( // 크리티컬 섹션 오브젝트 초기화 함수 LPCRITICAL_SECTION lpCriticalSection // 초기화 하려는 크리티컬 섹션 오브젝트의 주소값 ); void EnterCriticalSection( LPCRITICAL_S.. 더보기