• 线程的分离状态(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

  • 相关阅读:
    android 开机启动
    android 禁用home键盘
    android 获取各种窗体高度
    android 横竖屏切换
    android 还原短信
    android dp和px之间转换
    android BitMap、Drawable、inputStream及byte[] 互转
    手机卫士项目
    Android01_Android入门
    Android02_Activity
  • 原文地址:https://www.cnblogs.com/Zoran-/p/5819275.html
Copyright © 2020-2023  润新知