[질문] pthread_create 하면 생성 Thread... 253 한계...

zoops의 이미지

pthread_create 로 thread 를 생성합니다.

아무짓도 하지 않고...
계속 생성합니다.

thread 는 while(1) sleep(1000); 하고 있습니다.

그런데.. 253 개만 생성되고 난 후에
더이상 생성되지 않습니다.

왜 그럴까요??

PTHREAD_THREADS_MAX 는 16384 인데.....

항상 253개입니다. -.-;;

답변 부탁드립니다.

bugiii의 이미지

쓰레드 스택 크기를 한번 알아보시고 생성할 때 속성 지정해주시면 될겁니다...

zoops의 이미지

pthread_attr_setstacksize 로 설정 해봤으나...
결과는 같네요... 대략 난감...
253 의 의미가 뭘까요??

255 도 아니구.. -.-;;

하여간.. 누구 아시는분~~~

- zoops -

bugiii의 이미지

스택 크기는 얼마로 하셨는지요? 프로세스 생성 갯수 제한이 있는지도 조사해주세요.

zoops의 이미지

pthread_attr_init(&g_attr[i]);
pthread_attr_setstacksize(&g_attr[i], 1024);
status = pthread_create(&g_ThreadID[i], &g_attr[i], Run, (void*)i);

크기는 1024, 1 까지 해봤습니다.

프로세스 생성 갯수 제한이 있는지는 어떻게 조사하나요??

일딴 리턴값이..
ENOMEM 인것을 확인했습니다.

bugiii 님 말대로 메모리부족인데.... 이해할수 없군요..
스택사이즈를 바꿔도 그대로인데...

제가 setstacksize 를 잘못 사용했나요??

관심 가져주셔서 감사합니다.

- zoops -

zoops의 이미지

헉.. 해결했습니다.

setstacksize 를.. 1024*1024 (1M) 로 해주니 되네요..
-.-;;

아마도 디폴트는 너무 컸고...
1024(Byte) 는 너무 작아서 attr 이 먹질 않고 디폴트로 처리 되었나 봅니다.

다시한번 감사합니다. 꾸벅~
그럼 수고하시길...

- zoops -

bugiii의 이미지

축하드리구요.

zoops 아이디는 꼭 제 아이가 부르는 Today is Monday 노래의 수요일날 먹는 메뉴 같아서... ^^; Wednesday is ZOOOOP