#include
#include
#include
#include
#include
pthread_attr_t Attr;
void * get_stack(void *arg)
{
size_t stack_size;
// void *stack_addr;
pthread_attr_getstacksize(&Attr, &stack_size);//获取栈大小
printf("stack size = %d\n", stack_size);
}
int main(int argc, char **argv)
{
pthread_t id;
pthread_attr_init(&Attr);
pthread_attr_setdetachstate(&Attr, PTHREAD_CREATE_JOINABLE);
pthread_attr_setstacksize(&Attr,4096*1024);//设置线程的栈大小
if (pthread_create(&id, &Attr, (void *)get_stack, NULL) != 0)
{
perror("pthread_create error!\n");
return -1;
}
pthread_join(id, NULL);
pthread_attr_destroy(&Attr);
return 0;
}
通过系统命令ulimit -a 看stack size, -s 设置stack size. 或者通过getrlimit / setrlimit 系统调用在程序中设置栈大小。
阅读(905) | 评论(0) | 转发(0) |