#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()를 호출하게 하면 항상 순차적으로 동작 하게 된다.
'Embedded Linux' 카테고리의 다른 글
CVD 사용시 SFR의 데이터에 접근하고 싶을 때(Linux) (0) | 2014.11.19 |
---|---|
CodeViser의 S3C6410 Interface 설정 (0) | 2014.11.18 |
동기화 Mutex (0) | 2014.08.22 |
기본적인 pthread 사용법 정리 (0) | 2014.08.22 |
Volume was not properly unmounted ... (0) | 2014.07.24 |