linux创建线程时,需注意线程内存回收问题!

有三种方法可以回收线程内存

1.设置线程属性

 

    pthread_attr_t p_pth_attr;

 

    if  (0 != pthread_attr_init(&p_pth_attr))                                    
    {
        perror("pthread_attr_init");
        return -1;
    }

    if  (0 != pthread_attr_setdetachstate(&p_pth_attr, PTHREAD_CREATE_DETACHED))  
    {//此处设置成分离线程内存,一旦线程结束,立刻回收内存
        perror("pthread_attr_setdetachstate");
        return -1;
    }

2.在创建线程后调用pthread_join ()

 

3.使用pthread_detach()

 

void *ThreadFunc()

{

    static int count = 1;

    printf ("Create thread %d/n", count);

    pthread_detach (pthread_self());

    count++;

 

}

 

具体方法,参见http://blog.sina.com.cn/s/blog_4b9216f50100cwtc.html

 

以上只要使用一种方法即可,不可多种同时使用

The pthread_detach () function indicates that system resources for the specified thread should be reclaimed when the thread ends. If the thread is already ended, resources are reclaimed immediately. This routine does not cause the thread to end. After pthread_detach () has been issued, it is not valid to try to pthread_join () with the target thread.

Eventually, you should call pthread_join () or pthread_detach () for every thread that is created joinable (with a detachstate of PTHREAD_CREATE_JOINABLE ) so that the system can reclaim all resources associated with the thread. Failure to join to or detach joinable threads will result in memory and other resource leaks until the process ends.

 

具体说明,参见http://www.cnblogs.com/cy163/archive/2008/08/17/1269923.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值