#include <semaphore.h>
int sem_init(sem_t *sem, int pshared, unsigned int value);
int sem_wait(sem_t * sem);
int sem_trywait(sem_t * sem);
int sem_post(sem_t * sem);
int sem_getvalue(sem_t * sem, int * sval);
int sem_destroy(sem_t * sem);
sem_init : 세마포어 객체를 value 값으로 초기화.
pshared = 0 : 현재 프로세스에서 사용
pshared != 0 : 여러 프로세스 간에 공유
* 현재 Linux는 세마포어가 여러 프로세스 간에 공유되는 것을 지원하지 않음
sem_wait : 세마포어의 값을 1 줄이고, 세마포어의 값이 0인 경우 대기.
sem_trywait : sem_wait 의 넌블로킹(non-blocking) 버전.
세마포어의 값이 0이 아니면, 카운터 값은 감소되며 sem_trywait 는 즉시 0을 반환.
세마포어의 값이 0이면 ,sem_trywait 는 즉시 EAGAIN 을 반환.
sem_post : 세마포어의 값을 증가.
이 함수는 절대로 블록되지 않으며, 비동기 시그널 핸들러에서도 안전하게 사용.
sem_getvalue : sval 이 가리키는 위치에 sem 세마포어의 현재값을 저장.
sem_destroy : 세마포어 객체를 삭제하고 할당된 자원을 해제.
sem_destroy 를 호출하는 시점에서 해당 세마포어를 기다리는 쓰레드가 없어야 한다.
LinuxThreads 에서는 sem_destroy 는 단지 해당 세마포어를 기다리는 쓰레드가 없는지 검사하는 일만을 수행.
'프로그래밍 > C,C++' 카테고리의 다른 글
[C#] 파일 읽고,쓰기 기초 (0) | 2013.09.12 |
---|---|
[C#] 이미지 처리 기본 사항들 (0) | 2013.09.12 |
[C#] 이벤트 (0) | 2013.09.12 |
[C#] 폼 띄우기 (0) | 2013.09.12 |
GCC 옵션 (0) | 2011.07.21 |
POSIX 쓰레드 함수들 (0) | 2010.04.16 |
[Linux] 라이브러리 (0) | 2010.01.28 |
바이트오더~ 비트 스트림~ (0) | 2009.06.04 |
delete obj, delete [] obj 차이 (0) | 2009.06.04 |
[C] (0) | 2009.06.04 |