pthread를 이용하여 스레드를 구동하기 위해서는 pthread_create
함수를 사용합니다.
간혹 스레드를 사용하고 나서 스레드 종료시키는 것을 잊어 버리게 되는데요…
간단한 테스트 프로그램에서는 문제가 되지 않지만, 고객이 사용하는 프로그램이나 전문적인 프로그램에서는 프로그램이 종료 되기 전 반드시 스레드가 먼저 종료 되어야 합니다.
스레드가 동작 중일 때 프로그램이 먼저 종료 될 경우 에러나 예기치 않는 문제가 발생할 수 있기 때문입니다. 따라서, pthread_join
함수를 사용하여 생성된 스레드가 종료 될 때까지 기다리고 프로그램이 종료 되도록 구현합니다.
다음은 pthread 사용 방법 소스코드 입니다.
#include <pthread.h>
static pthread_t p_thread;
static int thr_id;
static bool thr_exit = true;
/**
* 스레드 함수
*/
void *t_function(void *data)
{
while(!thr_exit)
{
...
}
pthread_exit((void *) 0);
}
/**
* 스레드 시작
*/
void start_thread()
{
thr_exit = false;
thr_id = pthread_create(&p_thread, NULL, t_function, NULL);
}
/**
* 스레드 종료
*/
void end_thread()
{
thr_exit = true;
pthread_join(p_thread, (void**)NULL); // 해당 스레드가 종료되길 기다린다.
}
/**
* 메인 함수
*/
void main()
{
start_thread();
...
end_thread();
}
references