#include <semaphore.h>


int sem_init(sem_t *sem, int pshared, unsigned int value);

: 3번째 Parameter value의 값으로 semaphore 변수 초기값을 정하게 된다.

int sem_wait(sem_t *sem);

: semaphore 값이 0일 경우 대기하게 되고 아닐 경우 semaphore 값을 감소 시키고 다음 문장을 실행 하게 된다.

int sem_post(sem_t *sem);

: semaphore 값 증가

int sem_destroy(sem_t *sem);


#include <semaphore.h>

.

sem_t bin_sem;

.


int main(int argc, char **argv)

{

.

.

     ret = sem_init(&bin_sem, 0, 0);

.

.

    sem_destroy(&bin_sem);


     return 0;

}


이 semaphore을 사용하게 되면 원하는 Thread 함수를 특정 순서에 맞게 제어가 가능하다

예를 들어 항상 먼저 실행 되어야할 순서가 있다면  semaphore 변수을 0으로 초기화 다음 먼저 실행 되어야 할 

함수의 경우 sem_post()함수를 호출하게 하고 다른 함수를 sem_wait()를 호출하게 하면 항상 순차적으로 동작 하게 된다.


Posted by 깍수
,