CnUnix

[알림판목록 I] [알림판목록 II] [글목록][이 전][다 음]
[ CnUnix ] in KIDS
글 쓴 이(By): hsyoon (놀레기)
날 짜 (Date): 2005년 3월 21일 월요일 오후 11시 23분 38초
제 목(Title): 간단한 pthread 프로그램을 실행하는데 


pthread 를 사용하는 아주 간단한 예제 프로그램 - 책에도 

소개된 C 프로그램을 실행해보면 pthread_create 함수의리턴 값이

-1이 나옵니다.

쓰레드 생성이 안되는 이유가 무엇이 알수가 없네요.

코드는 이렇습니다. 

#include <pthread.h>
#include <stdio.h>

int sum;
void *runner(void *param);

main(int argc, char *argv[])
{
  pthread_t tid;
  pthread_attr_t attr;
  int rc;
  if(argc != 2) {
    fprintf(stderr, "usage: a.out <integer value>\n");
    exit();
  }
  if (atoi(argv[1]) < 0) {
    fprintf(stderr, "%d must be >= 0\n", atoi(argv[1]));
    exit();
  }
  printf("argv[1] = %s\n", argv[1]);
  pthread_attr_init(&attr);
  rc = pthread_create(&tid, &attr, runner, argv[1]);
  if(rc < 0) {
    fprintf(stderr, "pthread is not created \n");
    exit(-1);
  }
  pthread_join(tid, NULL);
  printf("sum = %d\n", sum);
  
}
void *runner(void *param)
{
  int upper = atoi(param);
  printf("upper = %d\n", upper);
  int i;
  sum = 0;
  if(upper > 0) {
     for(i=1; i <= upper; i++) sum+=i;
  }
  pthread_exit(0);
}

[알림판목록 I] [알림판목록 II] [글 목록][이 전][다 음]
키 즈 는 열 린 사 람 들 의 모 임 입 니 다.