반응형

 

 

#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;
}

 

 

반응형
Posted by 공간사랑
,