Redhat Linux中怎样自动设置线程堆栈大小?

Redhat Linux中怎样自动设置线程堆栈大小?,第1张

不是可以直接用线程属性进行设置吗?

我写了一个小程序。如下:

#include <pthread.h>

#include <limits.h>#define Thread_NUM 5void *MultiThread_soap_serve(){sleep(5) printf("new pthread!!\n")}//PTHREAD_STACK_MIN 经过计算是16K。//64*16K = 1M,线程堆栈应该是够用的。#define MICHAEL_SET_PTHREAD_STACK_SIZE 64int main(){pthread_attr_t attr pthread_attr_init(&attr) size_t stacksize = MICHAEL_SET_PTHREAD_STACK_SIZE*PTHREAD_STACK_MIN //stacksize =PTHREAD_STACK_MIN //stackaddr=(void*)malloc((N+1)*PTHREAD_STACK_MIN) //pthread_attr_getstack(&attr,&statckattr,&stacksize) //pthread_attr_setstack(&attr,stackaddr,) pthread_attr_setstacksize(&attr,stacksize) int iThreadNum = 0 pthread_t PSoapThread[Thread_NUM] for ( iThreadNum <Thread_NUM iThreadNum++ ){pthread_create(&PSoapThread[iThreadNum],&attr,MultiThread_soap_serve,(void *)NULL) }pthread_attr_destroy(&attr) while(1){sleep(10) printf("main!!\n") }}

一般是由于数组指针访问越界

或者是野指针造成

解决的办法:可以将代码按功能段,一段一段测试,

//测试一块代码时,先注释掉其它代码

找出错误出现的地方,修正

如果,因为程序里使用的堆栈大小大于默认的造成出错

需要修改默认的堆栈大小的值


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/7228743.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-03
下一篇 2023-04-03

发表评论

登录后才能评论

评论列表(0条)

保存