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


'개발이야기 > C, C++' 카테고리의 다른 글

포인터 배열 테스트 코드  (0) 2012.08.07
C코드 메모리릭 잡기  (0) 2012.07.18
부모 클래스의 기본생성자가 없을때 메모리 누수 현상  (2) 2012.06.12
마방진 원리 및 문제  (4) 2012.05.19
Mangled Name  (0) 2012.05.13