Thread API

GAON PARK·2023년 11월 14일
0
post-custom-banner

<pthraed.h>에 정의되어 있다.

  • POSIX Thread 의 줄임말
  • 리눅스, windows 등 어떤 OS에서든지 POSIX를 지원한다면 thread를 사용할 수 있다.
  • 위치 = /usr/include/pthread.h
  • thread를 사용할 경우 반드시 컴파일 할 때 pthread library를 링킹해야 한다.
    - gcc ./sample.c -o sample -lpthread

pthread_t

구조체

  • Thread 핸들러
  • Thread 를 제어하거나 정의할 때 사용한다
  • 해당 구조체에는 채워 넣어야 할 멤버들이 있다
    - 멤버들은 pthread_create() 를 통해 채워 넣는다

pthread_create()

thread를 생성

생성된 thread는 파라미터 값을 함수에 전달하며 함수를 실행한다.
thread가 언제 실행될 지는 전적으로 스케줄러가 정한다

int pthread_create(id, 속성, 함수, 파라미터)
  • id := 핸들러 주소, pthread_t*
  • 속성 := thread 우선 순위 같은 거 설정 가능, const pthread_attr_t*
  • 함수 := 동작 시킬 함수의 주소(함수 포인터), void*
  • 파라미터 := 동작할 함수에 인자 값을 전달, void*

pthread_join()

thread 종료 대기

thread가 종료되는 것을 기다렸다가 종료 이후, 해당 thread가 사용하던 자원 등을 정리한다.
pthread_create()와 꼭 함께 사용한다.

int pthread_join(pthread_t th, void **thread_return)
  • th := 핸들러
  • thread_return := Thread 종료 시, 동작한 함수의 return 값
  • return := error 처리 기능

Mutex API

pthread_mutex_t

구조체

  • mutex 핸들러

pthread_mutex_init()

mutex 객체 초기화

int pthread_mutex_init (핸들러 , 속성)
  • 핸들러 := pthread_mutex_t*
  • 속성 := pthread_mutex_attr*
    - NULL 을 사용하면, default 로 동적 초기화

pthread_mutex_destroy()

mutex 핸들러 제거

동적 초기화일 때만 사용 가능하며, 잠금 상태일 때 파괴하면 error가 발생한다.

int pthread_mutex_destroy(핸들러)

pthread_mutex_lock()

mutex 잠금 설정

이미 잠겨 있는 데, 잠그면 error가 발생한다.

int pthread_mutex_lock(핸들러)

pthread_mutex_unlock()

mutex 잠금 해제

이미 풀려 있으면 error가 발생한다.

int pthread_mutex_unlock(핸들러)
post-custom-banner

0개의 댓글