线程创建时指定线程栈的大小

来源:互联网 发布:手机gps定位软件 编辑:程序博客网 时间:2024/06/06 07:44

intithread_start(void *(run)(void *),void *arg) {

pthread_t threadId;

pthread_attr_t threadAttr;

memset(&threadAttr,0,sizeof(pthread_attr_t));

pthread_attr_init(&threadAttr);

    int status = 0;

    size_t size = 0;

    //printf("default size:%d\n", size);

    status = pthread_attr_getstacksize(&threadAttr, &size);

    if(0 != status)

{

 printf("pthread_attr_getstacksize err [%d]\n",status);

}

printf("current thread stack size:%d\n", size);


size = 1024*1024;

status = pthread_attr_setstacksize(&threadAttr, size);

if(0 != status)

{

printf("pthread_attr_getstacksize err [%d]\n",status);

return -1;

}

printf("set thread stack size:%d\n", size);

pthread_attr_setdetachstate(&threadAttr,PTHREAD_CREATE_DETACHED);

pthread_create(&threadId, &threadAttr, run, arg);

pthread_attr_destroy(&threadAttr);

printf("%d\n", (int)threadId);

return threadId;

}


此处代码修改线程的栈大小为1M


扩展:

1、  获取Linux默认线程栈大小

ulimite -s

2、  修改Linux默认线程栈大小

ulimite -s value



0 0