zoukankan      html  css  js  c++  java
  • 线程的分离状态(detached state)

    说到线程的分离状态,我认为,之所以会有这个状态,是因为系统对某些线程的终止状态根本不感兴趣导致的。

    我们知道,进程中的线程可以调用:

    1. int pthread_join(pthread_t tid, void **rval_ptr);  
    来等待某个线程的终止,获得该线程的终止状态,并收回所占的资源。如果对线程的返回状态不感兴趣,可以将rval_ptr设置为NULL。也可以调用:

    1. int pthread_detach(pthread_t tid);  
    将此线程设置为分离状态,设置为分离状态的线程在线程结束时,操作系统会自动收回它所占的资源。设置为分离状态的线程,不能再调用pthread_join()等待其结束。

    如果在创建线程时就知道不需要了解线程的终止状态,那么可以通过修改pthread_attr_t结构中的detachstate属性,让线程以分离状态启动,调用函数如下:

    1. int pthread_attr_detach(pthread_attr_t *attr, int detachstate);  
    总之线程以正常状态启动还是以分离状态启动最根本的出发点是系统是否需要知道线程的终止状态;

    这两种状态的区别是:

    • 正常状态:可以由其他线程终止,回收资源。(可以看成有人等,有人陪)
    • 分离状态:不能被其他线程终止,存储资源在它终止时由系统自动回收释放。(没人等,没人陪,自生自灭,死后回归大自然)


    Otc 4, 2012 23:45 @dorm



    原文:http://blog.csdn.net/anonymalias/article/details/8040156

  • 相关阅读:
    网络编程之Tcp,udp
    网络编程简介
    面向对象之高级篇 反射,元类
    面向对象 高级篇
    面向对象,继承
    初识面向对象
    包 hashlib,logging
    模块
    Dango生命周期回顾与forms组件
    Django中auth登录、注册、修改密码、退出、ORM自关联
  • 原文地址:https://www.cnblogs.com/Zoran-/p/5819275.html
Copyright © 2011-2022 走看看