https://pubs.opengroup.org/onlinepubs/7908799/xsh/pthread.h.html
<pthread.h>
The header defines the following symbols: PTHREAD_CANCEL_ASYNCHRONOUS PTHREAD_CANCEL_ENABLE PTHREAD_CANCEL_DEFERRED PTHREAD_CANCEL_DISABLE PTHREAD_CANCELED PTHREAD_COND_INITIALIZER PTHREAD_CREATE_DETACHED PTHREAD_CREATE_JOINABLE PTHREAD_EXPLICIT_SCHED PTHR
pubs.opengroup.org
전체 pthread.h에서 제공하는 명령어는 위 링크에서 확인할 수 있다.
> int pthread_create(pthread_t *, const pthread_attr_t *, void *(*)(void*), void*)
쓰레드를 생성한다. 쓰레드 정보를 저장할 위치, 쓰레드 애트리부트, 쓰레드에서 실행할 함수, 해당 함수에 적용할 파라미터를 설정한다.
애트리부트는 thread configuration이라고 생각하면 된다. 스택 사이즈, 스케줄 정책 등등을 설정할 수 있다.
쓰레드 생성 성공 시 0을 반환하며, 실패 시 오류값을 반환한다.
> int pthread_join(pthread_t, void**)
쓰레드가 완료될 때까지 대기한다. void**에는 쓰레드에서 반환한 값이 저장된다.
역시 성공 시 0을 반환하며, 실패 시 오류를 반환한다.
> void pthread_exit(void*)
쓰레드 내부로 전달한 함수에서 호출하면 된다. 쓰레드에서 값을 반환하는 용도로 사용한다. 해당 값은 상단의 pthread_join의 void**에 저장된다.
단순히 쓰레드에서 void* 를 반환하는 것과 동일하나, 쓰레드 내부에서 호출한 함수에서도 즉시 쓰레드를 종료한다.
#include <pthread.h>
#include <stdio.h>
void *f(void *data) {
char *name = (char *)data;
printf("hello from %s!", name);
pthread_exit((void *)0);
printf("it will be ignored!");
return (void *)1234;
}
int main() {
pthread_t pthread;
int thr_id;
int status;
char p1[] = "thread";
thr_id = pthread_create(&pthread, NULL, f, (void *)p1);
pthread_join(pthread, (void **)&status);
printf("thread exit value: %d", status);
printf("main thread end!");
return 0;
}

'C, C++' 카테고리의 다른 글
| C/C++] gcc 최적화 옵션 (0) | 2026.03.18 |
|---|---|
| C/C++] always_inline (0) | 2026.03.06 |
| C++] 템플릿 메타 프로그래밍 (0) | 2026.03.06 |
| C] spinlock (0) | 2026.03.05 |
| C] pthread_mutex_t 활용하기 (0) | 2026.03.04 |