最新动态

常见问题

什么是线程等待和线程分离

2021/4/20 16:12:39 阅读次数: 标签:线程,线程等待,线程分离

假如说线程在运行和退出我们有了个大致的概念了解,那么除此之外,还需要满足哪些线程步骤呢?


线程等待

线程默认情况下退出后,资源不会被回收,需要被其他线程等待,获取退出线程的返回值释放资源。

线程也不是必须被等待,在线程属性中,有一个分离属性,默认是joinable,处于joinable状态的线程退出后不会自动释放资源,需要被等待;

1.jpg

int pthread_join(pthread_t thread, void **retval);

//thread:线程ID

//**retval: 返回值

//pthread_join是一个阻塞接口

//返回值:成功返回0,失败返回错误码

代码实现


线程分离

如果你对一个线程的返回值不关心,你也不想去等待这个线程的推出;

设置线程分离属性为detach属性,处于detach属性的线程退出后自动释放资源,不需要被等待;

2.jpg

int pthread_detach(pthread_t thread);

//pthrad:分离线程的id

//可以在任意位置;

pthread_detach(pthread_self());

//pthread_self()函数,获取调用函数id;见下图:

// 线程自己分离