Linux如何设置堆栈的大小

之前对一个项目做过小的修改,觉得挺有用的就拿出来写写吧,主要就是做linux开发时,对系统资源的优化的一种方案

我们知道,在linux下创建的线程一般都会直接用int pthread_create(pthread_t *thread, const pthread_attr_t *attr, void *(*start_routine)(void*), void *arg)这个函数,那么这

个函数有什么不好的地方呢?就是系统会为该线程默认的分配一个对战的大小,大小为8M左右,这样一来,如果一个大的项目工程,需要创建几个甚至几十个这样的线程,我想内存资源很容易

会被耗尽,这是我们就需要一个对系统资源做一个管理,这里我们用到这样一个函数int pthread_attr_setstacksize(const pthread_attr_t  *attr,void *stackaddr,size_t *stacksize),

这里面参数的意义可以到网上搜一下,很多的解释。如果对pthread_attr_setstacksize函数有了基本的了解,很显然,我们对第一个参数需要做一个处理,也就是我将介绍的下一个函数

int pthread_attr_init(pthread_attr_t *attr); 就是对参数的一个初始化,做研发的都知道,有init必定会有fini,在这里是这样的一个函数int pthread_attr_destroy(pthread_attr_t *attr)
 
好了,到这里,几个函数都已经介绍完毕了,下面就是这样的一个流程:pthread_attr_init --> pthread_attr_setstacksize --> pthread_create --> pthread_attr_destroy
 
注意:在用这样的流程对线程的堆栈进行设置时,在编译时需要加上一句话:-lpthread。这个很重要的
posted on 2013-05-06 18:11  自由的飞宝  阅读(5375)  评论(0)    收藏  举报