当前位置: 技术问答>linux和unix
多线程以及内存释放问题?
来源: 互联网 发布时间:2016-10-30
本文导语: 说一下整个设计思想: ------->service_thread------->timer_thread | | | main_thread- | | | ...
说一下整个设计思想:
------->service_thread------->timer_thread
|
|
|
main_thread- |
|
|
|------->service_thread------->timer_thread
主线程在accept后调用service_thread接收网络数据,其中的数据有心跳包,所以由service_thread启动了timer_thread,service_thread会等待timer_thread结束后结束,但是发现每次链接过后会多分配4k的内存,是否需要再在线程里面调用pthread_exit函数,但是有人说这个是一种自杀的方式,还有我跟踪了里面的变量内存申请以及释放都是作完了的,看我还有那里没有考虑到,请大家想想,下面是我top的结果,红色部分为增加部分:
Mem: 40820K used, 78052K free, 0K shrd, 8000K buff, 6660K cached
Load average: 0.03, 0.02, 0.00 (State: S=sleeping R=running, W=waiting)
PID USER STATUS RSS PPID %CPU %MEM COMMAND
1150 root R 780 889 4.7 0.6 top
1100 root S
------->service_thread------->timer_thread
|
|
|
main_thread- |
|
|
|------->service_thread------->timer_thread
主线程在accept后调用service_thread接收网络数据,其中的数据有心跳包,所以由service_thread启动了timer_thread,service_thread会等待timer_thread结束后结束,但是发现每次链接过后会多分配4k的内存,是否需要再在线程里面调用pthread_exit函数,但是有人说这个是一种自杀的方式,还有我跟踪了里面的变量内存申请以及释放都是作完了的,看我还有那里没有考虑到,请大家想想,下面是我top的结果,红色部分为增加部分:
Mem: 40820K used, 78052K free, 0K shrd, 8000K buff, 6660K cached
Load average: 0.03, 0.02, 0.00 (State: S=sleeping R=running, W=waiting)
PID USER STATUS RSS PPID %CPU %MEM COMMAND
1150 root R 780 889 4.7 0.6 top
1100 root S