4.2 스레드 동기화
4.2.1 뮤텍스 함수
int pthread_mutex_init(pthread_mutex_t* mutex, const pthread_mutex_attr attr);
기능: 뮤텍스 초기화
int pthread_mutex_lock(pthread_mutex_t* mutex);
기능: 뮤텍스 획득
int pthread_mutex_unlock(pthread_mutex_t* mutex);
기능: 뮤텍스 반납
int pthread_mutex_destroy(pthread_mutex_t* mutex);
기능: 뮤텍스 비활성화
<공통>
리턴: 성공 시 0, 에러 시 에러번호 리턴
mutex: 뮤텍스 변수 주소
attr: 뮤텍스 속성 (일반적으로 NULL)
4.2.2 POSIX 이름있는 세마포어
세마포어 파일을 매개로 동기화 구현 (프로세스 간 동기화에 주로 사용)
sem_t* sem_open(const char* name, int oflag);
sem_t* sem_open(const char* name, int oflag, mode_t mode, unsigned int value);
기능: 세마포어 새로 생성 또는 기존 세마포어 열기
리턴: 성공 시 세마포어 주소, 실패 시 errno 설정 후 SEM_FAILED 리턴
int sem_close(sem_t* sem);
기능: 세마포어 닫기
int sem_unlink(const char* name);
기능: 세마포어 제거
int sem_wait(sem_t* sem);
기능: 세마포어 획득
int sem_post(sem_t* sem);
기능: 세마포어 반납
<공통>
리턴: 성공 시 0, 실패 시 errno 설정 후 SEM_FAILED 리턴
name: 세마포어 파일, /로 시작하는 이름
oflag: O_CREAT, O_EXCL 등
4.2.3 POSIX 이름없는 세마포어
세마포어 변수를 매개로 동기화 구현 (스레드 간 동기화에 주로 사용)
int sem_init(sem_t* sem, int pshared, unsigned int value);
기능: 세마포어 초기화
int sem_wait(sem_t* sem);
기능: 세마포어 획득
int sem_post(sem_t* sem);
기능: 세마포어 반납
int sem_destroy(sem_t* sem);
기능: 세마포어 비활성화
<공통>
리턴: 성공 시 0, 에러 시 errno 설정 후 -1 리턴
sem: 세마포어 변수 주소
pshared: 0인 경우 스레드 간 공유, 0이 아닌 경우 프로세스 간 공유를 의미
value: 세마포어 초기 값
'한국으로 > 임베디드 리눅스' 카테고리의 다른 글
5.4 파일시스템 (0) | 2018.07.01 |
---|---|
5.3 메모리 관리 (0) | 2018.06.29 |
5.2 시스템 콜 (0) | 2018.06.28 |
5.1 프로세스 관리 (0) | 2018.06.28 |
4.1 스레드란? (0) | 2018.06.27 |
3.4 메시지 큐 (0) | 2018.06.27 |
3.3 공유 메모리 (0) | 2018.06.27 |
3.2 세마포어 (0) | 2018.06.27 |