찬영_00 2025. 5. 7. 01:08
728x90

POSIX Thread (pthread) 주요 함수 정리

pthread는 POSIX 스레드 라이브러리로, C언어에서 멀티스레드 프로그래밍을 지원하는 표준 API 집합임.
병렬 처리 성능 향상 및 비동기 처리 구현할 때 필수임.

 

pthread 주요 함수 목록

함수 역할 주요 용도
pthread_create() 스레드 생성 새 스레드 시작
pthread_join() 스레드 종료 대기 스레드 종료 시점 동기화
pthread_exit() 스레드 종료 스레드 작업 종료 시 사용
pthread_detach() 스레드 분리 종료 대기 필요 없는 스레드로 만들기
pthread_self() 자신의 스레드 ID 반환 스레드 식별
pthread_equal() 두 스레드 ID 비교 스레드 동일성 확인

동기화 관련 함수 (Mutex)

함수 역할 주요 용도
pthread_mutex_init() 뮤텍스 초기화 뮤텍스 객체 준비
pthread_mutex_destroy() 뮤텍스 제거 뮤텍스 자원 해제
pthread_mutex_lock() 뮤텍스 잠금 공유 자원 보호
pthread_mutex_unlock() 뮤텍스 해제 공유 자원 잠금 해제

pthread 함수 원형 + 사용법

pthread_create()

스레드 생성
int pthread_create(pthread_t *thread, const pthread_attr_t *attr, void *(*start_routine)(void *), void *arg);
  • thread : 생성된 스레드 ID 저장 위치
  • attr : 스레드 속성 (NULL이면 기본속성)
  • start_routine : 스레드에서 실행할 함수 포인터
  • arg : start_routine으로 넘길 인자

사용 예시

pthread_t tid; pthread_create(&tid, NULL, worker, NULL);​

 


pthread_join()

스레드 종료 대기
int pthread_join(pthread_t thread, void **retval);
  • thread : 대기할 대상 스레드 ID
  • retval : 스레드 종료값 받는 포인터 (필요없으면 NULL)

사용 예시

pthread_join(tid, NULL);

pthread_exit()

스레드 종료

void pthread_exit(void *retval);
  • retval : 스레드 종료 시 반환할 값

사용 예시

pthread_exit(NULL);

pthread_detach()

스레드 분리 (자원 자동 정리)

int pthread_detach(pthread_t thread);
  • 스레드 종료 시 자동으로 자원 회수 (join 불필요)

사용 예시

pthread_detach(tid);

pthread_self()

현재 스레드 ID 반환

pthread_t pthread_self(void);
 

 

사용 예시

pthread_t tid = pthread_self();

pthread_equal()

두 스레드 ID 비교

int pthread_equal(pthread_t t1, pthread_t t2);


사용 예시

if (pthread_equal(t1, t2)) { printf("Same thread\n"); }

Mutex 함수 (동기화)

pthread_mutex_init() / destroy()

뮤텍스 초기화 및 해제

int pthread_mutex_init(pthread_mutex_t *mutex, const pthread_mutexattr_t *attr);
int pthread_mutex_destroy(pthread_mutex_t *mutex);

 

사용 예시

pthread_mutex_t lock; pthread_mutex_init(&lock, NULL); // 사용 후 pthread_mutex_destroy(&lock);

pthread_mutex_lock() / unlock()

뮤텍스 잠금/해제 (Critical section 보호)

int pthread_mutex_lock(pthread_mutex_t *mutex);
int pthread_mutex_unlock(pthread_mutex_t *mutex);

 

사용 예시

pthread_mutex_lock(&lock); // 공유 자원 접근 pthread_mutex_unlock(&lock);

 


정리

함수 목적 기본 예시
pthread_create 스레드 생성 pthread_create(&tid, NULL, fn, NULL);
pthread_join 스레드 종료 대기 pthread_join(tid, NULL);
pthread_exit 스레드 종료 pthread_exit(NULL);
pthread_detach 스레드 분리 pthread_detach(tid);
pthread_self 현재 스레드ID pthread_self();
pthread_equal 스레드ID 비교 pthread_equal(t1, t2);
pthread_mutex_lock 자원 잠금 pthread_mutex_lock(&lock);
pthread_mutex_unlock 자원 해제 pthread_mutex_unlock(&lock);

 

대강 많이 쓰는 함수를 정리해 보았다.

추후 사용할 떄 참고하자

728x90