作者hylkevin (Kevin)
看板C_and_CPP
标题Re: [问题] 关於thread释放记忆体问题
时间Thu Mar 5 21:07:31 2009
※ 引述《puph (真冷...)》之铭言:
: 大家好 小弟目前在写一个C code
: 需要用到timer timer会由事件处发
: 我使用thread来实现timer 每当事件发生就起始一个thread
: 我想要计时 5秒 thread一启动 就先下sleep(5)
: 等sleep结束 再执行我想要做的事
: 做完下pthread_exit() 结束thread
: 以上
: 每一个时间点 大概会有2~3个thread被执行中
: 不过很诡异的事情 当我执行一段时间後
: 就会显示 "Cannot allocate memory"
: 想请问 有确实的下了pthread_exit() 为何还会出现记忆体空间不足?
线程可用pthread_exit(void *retval)结束
但是并不会清理资源
直到你在其他任何线程中呼叫pthread_join(pthread_t thread_id, void** ret);
thread_id是pthread_create时产生
*ret=retval
或者
将该线程用pthread_detach(thread_id)设为detached模式
return之後该线程的资源会被自动释放
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 220.136.181.131
1F:→ puph:原来是这个原因 感谢你 明天马上来试试看!! 03/05 21:20
2F:→ hylkevin:ret可以丢NULL进去 03/05 21:43