-
[C] pthread의 기본 구조와 함수들C_C++ 프로그래밍 2019. 5. 24. 22:33기본적으로 프로그래밍에 있어서, 효율은 매우 중요하다.특히 우리가 컴퓨터를 하거나 스마트폰을 할 때음악을 들으면서, 검색을 할 수 있는 이유는 주어진 자원을 최대한 활용하기 때문인데이것이 가능한 이유는 Thread(쓰레드)가 가능하기 때문이다.쓰레드는 매우매우 중요한데, 프로그램에 있어서"쓰레드로 만들어지지 않은 프로그램은 쓰레기"라는 말이 있을 정도이다.주로, 우리는 쓰레드를 간단한 예제로 통신으로 구현을 한다.이유로는 코드 분량이 적고 가장 쓰레드의 특성을 잘 표현할 수 있기 때문이다.
pthread 함수를 쓰기 위해 필요한 헤더 파일
#include<pthread.h>
linux 상에서 컴파일을 하기 위해서는 반드시 -lpthread를 해주어야 한다.
pthread의 함수들
int pthread_create(pthread_t *th_id, const pthread_attr_t *attr, void* 함수명, void *arg);
1. pthread_t : pthread의 자료형이다.
2. *th_id : pthread식별자로 thread가 생성이 된다면, thread 식별값이 주어진다.
3. void *함수명: pthread로 분기할 함수를 칭한다.
4. void * arg: pthread로 분기할 때 넘겨줄 인자의 값이다
(이때, 어떠한 자료형을 넘겨줄지 모르기 때문에 void를 사용하며, 필요에 따라 구조체를 생성하여 인자를 여러개를 전달할 수 있다.)
int pthread_join(pthread_t th_id, void** thread_return);
식별한 pthread가 종료될 때까지 기다리다가
pthread가 종료시 자원을 풀어준다.
1. pthread_t th_id: 어떤 pthread를 기다릴지 구별하는 식별자
2. pthread의 return 값, 포인터로 받아온다.
void pthread_cleanup_push(void* (함수명), void * arg);
pthread_exit()가 호출될 때 호출된 handler를 정하는 함수.
보통 자원을 해제하기 위해서 mutext lock을 풀어준다.
int pthread_detach( pthread_t th_id);
detach = 분리하다.
th_id 값을 가지는 쓰레드가 부모로부터 독립한다.
void pthread_exit(void *ret_value);
현재 실행하고 있는 thread를 종료한다.
void pthread_cleanup_pop(int exec);
설정된 cleanup handler를 제거하기 위해서 사용되는 함수이다.
exec를 0으로 가지는 경우 바로 cleanup handler 제거하고
그외의 값을 가지는 경우 cleanup handler를 한번 실행한 후 제거한다.
pthread_t pthread_self(void);
현재 동작중인 pthread의 식별자를 리턴한다.
※ 본 글은 개인 포트폴리오 혹은 공부용으로 사용하기 때문에, 무단 복사 유포는 금지하지만, 개인 공부 용도로는 얼마든지 사용하셔도 좋습니다
반응형'C_C++ 프로그래밍' 카테고리의 다른 글
thread_exit(쓰레드에서 특정 값을 return을 시키자) (0) 2019.05.25 pthread_detach(쓰레드 자원들을 분리시키자) (0) 2019.05.25 pthread_join(쓰레드의 종료를 대기한다) (0) 2019.05.25 pthread_create 예제 (쓰레드 생성) (0) 2019.05.25