pthread API 사용하기 위한 헤더파일
-> #include <pthread.h>
pthread 대표 API
1.int pthread_create(pthread_t *thread_id. const pthread_attr_t *attr, void* start_func, void *arg)
기능 : 호출 프로세스에서 새로운 쓰레드 시작
반환값 : 성공하면, 0 리턴, 에러 발생 시 error number 리턴하고 thread argument 포인터 미지정
매개변수
- *thread_id : pthread 식별자
- attr : 쓰레드 속성 타입
- func : pthread로 부기할 함수
- arg : pthread로 분기할 때 넘겨줄 인자 값
2. int pthread_join(pthread_t thread_id, void** thread_return)
기능 : 식별한 pthread가 종료될 때까지 기다린 후(blocking) pthread가 종료.(쓰레드 종료 대기)
반환값 : 성공 시 0, 실패시 0 이외의 에러 코드
매개변수
- thread_id : 종료 대기 및 리턴 값을 받을 쓰레드 ID, pthread_create() 실행 시 생성된 쓰레드 ID 값을 넣는다.
- thread_return : 종료 대기 및 리턴 값, 포인터로 받는다.
3. int pthread_detach(pthread_t thread_id)
기능 : 인자로 주어진 쓰레드 식별번호를 가지는 쓰레드를
메인쓰레드에서 분리한다. pthread_join을 하지 않고도 생성된 쓰레드 종료시
자원을 시스템에 반환한다. 식별 쓰레드가 detach 상태가 된다면, 해당 쓰레드에 대한 pthread_join()은 실패한다.
반환값 : 성공 시 0, 실패시 0이외의 에러코드
매개변수
- thread_id : 메인 쓰레드에서 분리 시킬 쓰레드 id
4. void pthread_cancel(pthread_t thread_id)
기능 : 인자로 주어진 쓰레드 식별번호를 가지는 쓰레드를 중지
매개 변수
- 종료 할 쓰레드 id
5. void pthread_exit(pthread_t thread_id)
기능 : 현재 실행하는 쓰레드를 종료한다.
반환값 : X
매개 변수
- 종료 할 쓰레드 id
쓰레드 생성 시 : pthread_create() API 이용
쓰레드 종료 시
1.한 프로세스 내 하나의 쓰레드만 종료
- pthread_create에서 호출한 start_func 함수 리턴한 경우
- pthread_exit가 호출된 경우
- pthread_cancel 호출된 경우
2. 한 프로세스 내 전체 쓰레드 종료
- 프로세스 내 main() 리턴한 경우
- 프로세스가 exit() 호출한 경우
- execve() 호출하여 새로운 바이너리를 실행한 경우
pthread API를 linux 상에서 컴파일하기 위한 gcc 옵션
-> -lpthread
'리눅스 > 임베디드 리눅스' 카테고리의 다른 글
echo 리다이렉트 정의 및 사용법 (0) | 2024.11.13 |
---|---|
리눅스 디렉토리 구조[1] (0) | 2024.08.19 |
파일을 이용한 동기화 (0) | 2024.08.13 |
저수준 OpenAPI (0) | 2024.08.13 |