Recommanded Free YOUTUBE Lecture: <% selectedImage[1] %>

<a href="/modules/moniwiki/wiki.php/manSearch?google=none&name=ptread_create">ptread_create</a>(3)

1장. ptread_create(3)

차례
1.1절. 사용법
1.2절. 설명
1.3절. 반환값
1.4절. 에러
1.5절. 예제

새로운 쓰레드를 생성한다.


1.1절. 사용법

#include <pthread.h>

int  pthread_create(pthread_t  *  thread, pthread_attr_t *
attr, void * (*start_routine)(void *), void * arg);
		


1.2절. 설명

pthread_create는 새로운 쓰레드를 생성한다. 새로운 쓰레드는 start_rutine 함수를 arg 아규먼트로 실행시키면서 생성된다. 생성된 쓰레드는 pthread_exit(3) 을 호출하거나 또는 start_rutine 에서 return 할경우 제거된다.

attr 아규먼트는 쓰레드와 관련된 특성을 지정하기 위한용도로 사용된다. 이에 대한 내용은 pthread_attr_init(3) 을 참고해야 한다. attr 을 NULL 로 할경우 기본 특성으로 지정된다. 리눅스에서의 쓰레드는 joinable 과 non real-time 스케쥴 정책을 기본특성으로 한다.


1.3절. 반환값

성공할경우 쓰레드식별자인 thread에 쓰레드 식별번호를 저장하고, 0을 리턴한다. 실패했을경우 0 이 아닌 에러코드 값을 리턴한다.


1.4절. 에러

EAGAIN

쓰레드 생성을 위한 자원이 부족하거나, PTHREAD_THREADS_MAX를 초과해서 쓰레드 생성을 요청할경우


1.5절. 예제

#include <pthread.h>

#include <stdlib.h>

// 쓰레드 함수
void *test(void *data)
{
    int i;
    int a = *(int *)data;
    for (i = 0; i < 10; i++)
    {
        printf("%d\n", i*a);
    }
    return (void *)(i * 100);
}

int main()
{
    int a = 100;
    pthread_t thread_t;
    int status;

    // 쓰레드를 생성한다. 
    if (pthread_create(&thread_t, NULL, test, (void *)&a) < 0)
    {
        perror("thread create error:");
        exit(0);
    }

    // 쓰레드가 종료되기를 기다린후 
    // 쓰레드의 리턴값을 출력한다. 
    pthread_join(thread_t, (void **)&status);
    printf("Thread End %d\n", status);
    return 1;
}