본문 바로가기
Computer Science

Pthread

by 개발자 데이빗 2022. 1. 19.

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 뮤텍스 - 상호 배제

  • 뮤텍스 선언과 초기화
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

댓글