프로그램 언어/C언어
pthread_2 - C
찬영_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