pthread_attr_setstacksize 사용법에 관하여...
안녕하세요.
size_t stacksize;
pthread_attr_t p_attr;
pthread_attr_init(&p_attr);
stacksize = 1024*1024*10;
if(!pthread_attr_setstacksize(&p_attr,stacksize ))
printf("1 set stacksize = %dKB ( %d )
( %s ) \n", stacksize,errno,strerror(errno));
else
{
printf("2 set stacksize = %dKB ( %d )
( %s ) \n", stacksize,errno,strerror(errno));
}
if(!pthread_attr_getstacksize(&p_attr, &stacksize))
printf("1 get pthread_attr_getstacksize
stacksize = %dKB ( %d )( %s ) \n",
stacksize,errno,strerror(errno));
else
{
printf("2 get pthread_attr_getstacksize
stacksize = %dKB ( %d )( %s ) \n",
stacksize,errno,strerror(errno));
}
int i = 0;
if(!pthread_create(&threadID,&p_attr,mon_thread,(void*)&i))
{
printf("check stacksize = %dKB ( %d ) ( %s )
\n ", stacksize,errno, strerror(errno));
}
위와 같이 코드를 작성해서 가동 시키니 ..
2 set stacksize = 10485760KB ( 0 ) ( Success )
1 get pthread_attr_getstacksize stacksize = 2093056KB ( 0 )( Success )
check stacksize = 2093056KB ( 0 ) ( Success )
위와 같이 결과가 나옵니다. set statck 에서 잘못된것 가은데
errno 는 0 이 나옵니다. 이걸 사용할려면 컴파일 옵션에서 뭐
따로 설정 해줘야 하는건가요?
좋은 밤 되세요.
일단 KB가 아니고 B일텐데...컴파일 명령도 보여주세요.
일단 KB가 아니고 B일텐데...
컴파일 명령도 보여주세요.
Re: pthread_attr_setstacksize 사용법에 관하여...
size_t 으로 요구하는 크기보다 적게 할당되었다면,
혹 빌딩하는 환경에서 pthread의 stack size의 upper limit이
설정되어 있나 확인해보세요.
그리고 parameter로 사용되는 stacksize는 B입니다 ^^
~.~
댓글 달기