검색결과 리스트
글
pthread 함수정리
안드로이드 NDK(리눅스 커널)에서 pthread를 지원한다고 한다.
단일 프로세스에서 동시에 여러작업을 하는것처럼 보여지기위해 스레드를 사용한다.
pthread API 함수를 쓰기 위해서 #include <pthread.h>를 해야한다.
또한 컴파일시 -lpthread 옵션 추가를 해주어야 한다.(미추가시 컴파일 오류 혹은 스레드가 정상으로 작동하지 않음)
pthread_t : pthread의 자료형을 나타낸다.
1. pthread 생성
int pthread_create(pthread_t *th_id, const pthread_attr_t *attr, void *함수명, void *arg)
첫번째 인자 : pthread 식별자(thread가 생성되면 thread식별자 값이 주어진다.)
두번째 인자 : pthread 속성(옵션), 기본적인 thread를 사용할경우 NULL로 설정
세번째 인자 : pthread 분기함수, 반환값이 void* 타입이고 매개변수도 void* 으로 선언된 함수만 사용할수있다.
예) void *threadFunc(void *arg)
네번째 인자 : 분기할 함수로 넘겨줄 인자값. 어떤 자료형을 넘겨줄 지 모르기 때문에 void 형으로 넘겨주고, 상황에 맞게
분기하는 함수 내에서 원래의 자료형으로 캐스팅해서 사용하면 된다.
▶ 성공적으로 pthread가 생성된 경우 0을 리턴
2. pthread 옵션
int pthread_join(pthread_t th_id, void **thread_return)
- 특정 pthread가 종료될 때까지 기다리다가 pthread가 종료시 자원 해제
첫번째 인자 : pthread를 기다릴 id
두번째 인자 : pthread의 return값(포인터로 받아와야함)
int pthread_detach(pthread_t th_id)
- th_id 식별자를 가지는 pthread가 부모 pthread로 부터 독립한다.
(pthread_join(..)이 없어도 종료시 자동으로 리소스가 해제됨)
void pthread_exit(void *ret_value)
- 현재 실행중인 thread를 종료시킨다. pthread_exit가 호출되면 cleanup handler가 호출되며 리소스 해제하는 일을 수행
void pthread_cleanup_push(void *함수명, void *arg)
- pthread(exit)가 호출될때 호출된 handler를 정하는 함수(자원 해제용이나 mutex lock해제를 위한 용도로 사용)
void pthread_cleanup_pop(int exec)
- 설정된 cleanup handler를 제거하기 위해서 사용하는 함수(exec 값이 0일 경우 바로 cleanup handler 제거하고 그 외
의 값을 가질 경우 cleanup handler를 한번 실행한 후 제거한다)
pthread_t pthread_self()
- 현재 동작중인 pthread의 식별자를 리턴.
'프로그래밍 > C/C++' 카테고리의 다른 글
[STL] 정렬 컨테이너1 (set, multiset, map, multimap) (0) | 2014.02.09 |
---|---|
[STL] 제네릭(generic) 기초 정리 (0) | 2014.02.09 |
[STL]기초, 컨테이너(vector, deque, list) (0) | 2014.02.09 |
윈도우 스레드(win thread) - 세마포어예제 (0) | 2014.01.29 |
멀티스레드 개념 정리 (0) | 2014.01.28 |