Semaphore
- 깃발 신호
- 2개의 기본 원자적 동작으로 제어되는 정수
- Lock이나 조건 변수로 사용 가능
POSIX Semaphore
- sem_init
- sem_wait
- sem_post
Semaphore란 무엇인가?
- 문지기가 입구에서 인원을 관리하는 개념
- thread가 빈 공간이 생길 때까지 대기
- 여기서 문지기가 Semaphore임
- 여려명이 Lock을 얻은것 같은 기능을 수행함
POSIX Semaphore
초기화
- int sem_init(sem_t *som, int pshared, unsigned int value);
- sem : 사용할 세마포어 변수
- pshared : 0(한 프로세스의 쓰레드 간에 공유(전역 변수)), Nonzero(여러 프로세스 간에 공유(공유 메모리))
- value : 세마포어 초기값, 음수가 될 수 없음에 주목
- 반환값 : 호출이 성공하면 0, 실패하면 -1 반환
#include <semaphore.h>
sem_t s;
sem_init(&s, 0, 1)
sem_wait