■ 동기화(Synchronization)

- 두개 이상의 제품을 서로 같아지게 만드는 것

 

■ 스레드 동기화

- 두개 이상의 스레드가 공유 리소스(공유 데이터)에 접근할 때 다양한 문제가 발생할 수 있는데 , 이러한 문제를 해결하기 위한 작업을 스레드 동기화라 부른다

 

■ 스레드 동기화 기법

1. 임계 영역(critical section)

- 공유 리소스에 대해 하나의 스레드만 접근을 허용한다

- 같은 프로세스에 속한 스레드에서만 사용 가능하다

 

2. 뮤텍스(mutex)

- 공유 리소스에 대해 하나의 스레드만 접근을 허용한다

- 서로 다른 프로세스에 속한 스레드에서도 사용이 가능하다

 

3. 이벤트(event)

- 특정 스레드가 신호를 주면 나머지 스레드들이 실행되도록 할 때 사용

 

4. 세마포어(semaphore)

- 한정된 개수의 자원을 여러 스레드가 사용하려고 할 때 접근을 제한한다

 

5. 대기 가능 타이머(waitable timer)

- 특정 시간이 되면 대기 중인 스레드를 꺠운다

 

■ 임계영역 동기화에 사용하는 함수들

1. CRITICAL_SECTION cs;

- 임계영역에 진입하기 위해서 CRITICAL_SECTION 구조체 변수를 전역변수로 선언

 

2. InitializeCriticalSection(&cs);

- 임계영역을 사용하기 전에 초기화하는 함수

 

3. EnterCriticalSection(&cs);

- 임계영역에 진입하는 함수

 

4. LeaveCriticalSection(&cs);

- 임계영역을 탈출하는 함수

 

5. DeleteCriticalSection(&cs);

- 임계영역 해제 함수

- CRITICAL_SECTION 구조체가 사용하던 리소스를 소멸시키는 함수이다

■ 대화상자 프로시저와 윈도우 프로시저의 차이점

- 윈도우 프로시저는 LRESULT형(long형)를 리턴 , 대화상자 프로시저는 BOOL형을 리턴

- 대화상자 프로시저는 메시지를 처리했으면 TRUE를 리턴하고 , 메시지를 처리하지 못해 FALSE를 리턴 했다면
그 메시지에 대한 처리는 윈도우가 알아서 해준다(DefWindowProc 필요 없음)

- 대화상자 프로시저는 WM_CREATE 메시지 대신에 WM_INITDIALOG 메시지를 사용해서 대화상자에 대한
초기화작업을 수행한다

■ 두개의 대화상자

모달형 : 대화상자를 닫기 전에 다른 윈도우로 전환할 수 없다. 그러나 다른 프로그램으로는 전환할 수 있다.

모델리스형 : 대화상자를 열어 놓은 채로 다른 윈도우로 전환할 수 있는 대화상자이다.

■ 대화상자 메시지

WM_INITDIALOG : 대화상자가 만들어질 때 발생하는 메시지

WM_COMMAND : 대화상자에서 컨트롤이나 매뉴항목을 선택할 때 발생하는 메시지 어떤 메뉴 항목이 선택되었는지는 wParam의 하위 워드로 전달되므로

LOWORD(wParam) 으로 알 수 있다:

IDOK : OK버튼을 누를때

IDCANCEL : CANCEL버튼을 누를 때??


  • 카카오톡-공유
  • 네이버-블로그-공유
  • 네이버-밴드-공유
  • 페이스북-공유
  • 트위터-공유
  • 카카오스토리-공유

댓글을 달아 주세요