반응형
Pthread
- thread 표준 API
- POSIX thread 또는 Pthread라고 부른다.
- Pthread API
- 저수준 API로 100여갸의 함수 제공
- 유닉스 시스템 핵심 스레딩 라이브러리
- 다른 스레딩 솔려순도 Pthread 기반으루 구현
Pthread 라이브러리
- <pthread.h> 헤더 파일에 정의
- 모든 함수는 pthread_로 시작
- 두가지 그룹으로 나뉜다
- 스레드 관리: 생성, 종료, 조인, 디태치 함수 등
- 동기화: 뮤텍스 (상호배제) 등 동기화 관련 함수
- 기본 라이브러리와 분리된 libpthread 라이브러리에 구현되어 있으므로 컴파일시 명시적으로 -pthread 옵션이 필요하다.
gcc -pthread test.c -o test
스레드 생성
// thread: 생선된 스레드 식별자
// attr: 스레드 특정 설정(기본 NULL)
// start_routine: 스레드 함수 (스레드로 분기해서 실행할 함수)
// arg: 스레드 함수 인자
pthread_t thread1;
void *thread_function(void *ptr);
ret = pthread_create(&thread1, NULL, thread_function, (void*)message);
스레드 종료
pthread_exit(NULL);
스레드 조인
- 메인 스레드에서 종료, 상태값 + 추가처리
// 첫번째 인자 = 기다릴 thread의 식별자
// 두번쨰 인자 = 스레드의 리턴값을 가리키는 포인터
pthread_join(p_thread, (void *)&status);
스레드 디태치
- 해당 스레드가 종료될 경우, 즉시 관련 리소스를 해제(free)한다.
- pthread_join을 기다리지 않고 종료 즉시 리소스를 해제한다.
// thread: detach 할 스레드 식별자 int pthread_detach(pthread_t thread);
- pthread_join을 기다리지 않고 종료 즉시 리소스를 해제한다.
Pthread 뮤텍스 - 상호 배제
- 뮤텍스 선언과 초기화
pthread_mutex_t mutex_lock = PTHREAD_MUTEX_INITIALIZER;
- 뮤텍스 락 걸기/풀기
int pthread_mutex_lock(pthread_mutex_t *mutex);
int pthread_mutex_unlock(pthread_mutex_t *mutex);
반응형
'Computer Science' 카테고리의 다른 글
네트워크 정의와 구조 (0) | 2022.02.15 |
---|---|
컴퓨터 구조와 레지스터 (0) | 2022.01.21 |
쉘 스크립트 (0) | 2022.01.14 |
시스템 프로그래밍 - 프로세스 관리 (0) | 2022.01.10 |
시스템 프로그래밍 핵심 기술 (0) | 2022.01.09 |
댓글