#include <pthread.h>
#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
/* 쓰레드 함수 */
void *t_function(void *data)
{
int id;
int i = 0;
id = *((int *)data);
while(1)
{
printf("%d : %d\n", id, i);
i++;
sleep(1);
}
return;
}
int main()
{
pthread_t p_thread[2];
int thr_id;
int status;
int a = 1;
int b = 2;
/* 쓰레드 생성 인자로 1을 넘긴다 */
thr_id = pthread_create(&p_thread[0], NULL, t_function, (void *)&a);
if(0 < thr_id)
{
perror("thread create error : ");
exit(0);
}
/* 쓰레드 생성 인자로 2를 넘긴다 */
thr_id = pthread_create(&p_thread[1], NULL, t_function, (void *)&b);
if(0 < thr_id)
{
perror("thread create error : ");
exit(0);
}
/* 쓰레드 종료를 기다린다
* 실행된 쓰레드에 대해서는 pthread_join 등의 함수를 이용하여 쓰레드가 종료될 때까지 기다려 주어야 한다.
* pthread_join은 일종의 fork의 wait과 비슷하게 작동하며, 쓰레드 자원을 해제 시켜준다.*/
pthread_join(p_thread[0], (void **)&status);
pthread_join(p_thread[1], (void **)&status);
return 0;
}