스레드 동기화2
멀티 스레드 동기화 기법
멀티 스레드 동기화란?
- 상호 배제 기반 위에, 자원을 사용하려는 여러 스레드들이 자원을 원활히 공유하도록 하는 기법
- 동기화 프리미티브(synchronization primitives)
대표 기법
- locks 방식 : 뮤텍스(Mutex), 스핀락(spinlock)
- wait-signal 방식 : 세마포(semaphore)
뮤텍스
뮤텍스 기법이란?
- 잠김/열림 중 한 상태를 가지는 락 변수 사용
- 한 스레드만 임계구역에 진입, 다른 스레드는 큐에 대기
뮤텍스 기법의 구성 요소
1. 락 변수
- true/false 중 한 값
- true : 락을 잠근다. = 락을 소유한다.
- false : 락은 연다. = 락을 해제한다.
2. 대기 큐
- 락이 열리기를 기다리는 스레드 큐
3. 연산
- lock 연산(임계구역의 entry 코드)
- unlock 연산(임계구역의 exit 코드)
사진
뮤텍스 동기화를 위한 POSIX 표준 라이브러리
- 뮤텍스락 변수
- pthread_mitex_t lock
- 대기큐는 pthread 라이브러리 내부에 구현되어 있기 때문에 사용자에게 보이지 않는다.
- 뮤텍스 조작 함수
- 코드 동기화 사례
스핀락
스핀락 기법이란?
스핀락 기법의 구성요소
스핀락을 이용한 동기화 특징
스핀락 동기화를 위한 POSIX 표준 라이브러리
뮤텍스와 스핀락 비교
뮤텍스와 스핀락은 어떤 경우에 적합한가?
세마포
This post is licensed under CC BY 4.0 by the author.