pthread에서 프로세스의 갯수가 왜 이렇게 나오는지 궁금합니다.
글쓴이: gugudan / 작성시간: 금, 2004/10/22 - 10:22오전
#include <stdio.h> #include <unistd.h> #include <pthread.h> void* do_loop(void *data) { int i; int me = *((int *)data); for (i = 0; i < 10; i++) { printf("%d - Got %d\n", me, i); sleep(1); } } int main() { int thr_id; pthread_t p_thread; int status; int a = 1; int b = 2; int c = 3; thr_id = pthread_create(&p_thread, NULL, do_loop, (void *)&a); pthread_join(p_thread, (void *) &status); printf("programing is end\n"); return 0; }
요즘 스레드를 보고 있는데 이 소스를 실행을 하면
프로세스가 3개가 뜹니다.
리눅스 커널 버젼이 낮아서 프로세스가 뜨는건 이해가 가는데
왜 3개가 뜨는거지요?
메인 스레드하고 내가 생성한 스레드..
이렇게 2개가 뜨는게 정상 아닌가요?
Forums:
하나는 쓰레드 스케쥴러 입니다.생성되는 모든 쓰레드는 그 프로세스의
하나는 쓰레드 스케쥴러 입니다.
생성되는 모든 쓰레드는 그 프로세스의 자식으로 되죠.
pthread_create는 실제 쓰레드를 생성하는 것이 아니라 중간에 있는 스케쥴러에게 쓰레드를 생성해달라는 요청만하는 것입니다.
---
http://coolengineer.com
댓글 달기