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。这个很重要的
浙公网安备 33010602011771号