본문 바로가기
리눅스/임베디드 리눅스

pthread API

by [Akashic Records] 개발의선지자 2024. 10. 25.

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