Condition Variables
- 락
- 조건 변수
- 임계 영역 진입 시 특정 조건을 검사해야 할 필요가 있는 경우
핵심 질문
- 조건이 충족되기를 기다려서 다음 동작 진행해야 함
- 어떻게?
조건 검사 예
- main 쓰레드가 자식이 끝나기를 기다린다
- 즉, pthread_join()은 어떻게 구현할 수 있는가?

- 이러면 효율성이 떨어짐… (while문 무한 반복중, 타임 슬라이스 다 쓰면 자식 프로세스한테 CPU 넘겨줌)
조건 변수란
- 큐
- 원하는 조건이 이루어질 때까지 쓰레드가 대기하는 자료 구조(여러개의 쓰레드가 대기 가능)
기본 함수
- 대기 : 조건이 원하는 바와 다를 때, 원하는 조건이 되기를 기다리며 큐에서 대기(sleep)
- 신호 : 조건을 변경한 다른 쓰레드가 대기 중인 쓰레드를 하나 이상 깨움
pthread 예를 보자
- 조건 변수 선언
- 초기화
- red = pthread_cond_init(&c, NULL); //정상이면 0, 아니면 error 코드 반환, 초기화 해야됨!!
- 전역 변수로 선언과 초기화를 같이 하는 경우
- pthread_cond_t c = PTHREAD_COND_INITIALIZER; //초기화 해야됨!!