Linux 线程Detach&Join

简介: 1.等待线程pthread_join 函数用来等待一个线程的结束,类似于进程的 wait 函数。
1.等待线程
pthread_join 函数用来等待一个线程的结束,类似于进程的 wait 函数。
此函数将阻塞调用当前线程的进程,直到此线程退出。即这个函数是一个线程阻塞的函数,调用它的进程将一直等待到被等待的线程结束为,当函数返回时,处于被等待状态的线程资源被收回。如果执行成功,将返回 0,如果失败则返回一个非 0。此函数的第一个参数为被等待的线程标识符,此值为创建线程时返回的线程 ID,此线程必须同调用它的进程相联系,即创建该线程时不能指明此线程为独立的线程。第二个参数为一个用户定义的指针,指向一个保存等待线程的完整退出状态的静态区域,它可以用来存储被等待线程的返回值,如果在创建线程时 pthread_create 函数的第二个参数__attr 设置为 NULL,则此退出的状态信息会丢失。关于等待指定线程结束,需要注意以下几点:
(1)一个线程只能等待连接一个其他线程。
(2)发布连接操作的线程不一定是初始线程。
(3)如果有多个线程等待同一线程执行,只有一个线程能够得到正确的状态信息。
(4)有竞争关系的线程间的连接操作将返回一个错误。
(5)如果启动连接的线程被取消,则处于等待状态的线程可以被其他线程等待。
(6)如果目标线程在执行 pthread_join 前结束,则该调用将不会引起任何阻塞并立即返回。
(7)一个未被连接的非独立线程在线程结束前一直占用资源,直到创建它的进程结束。
pthread_join函数声明如下:
extern int pthread_join (pthread_t __th, void **__thread_return);
2.分离线程
分离线程是等待的逆操作。pthread_detach 库函数以欲操作的线程 ID 为其唯一的参数。如果执行成功,将使该线程与当前进程分离,使其成为一个独立的线程,并返回 0,当 thread终止时,系统将自动回收它的资源;如果执行失败,将不分离指定的线程并返回非零值。
pthread_detach 函数声明如下:
/* Indicate that the thread TH is never to be joined with PTHREAD_JOIN.
The resources of TH will therefore be freed immediately when it terminates, instead
of waiting for another thread to perform PTHREAD_JOIN on it. */
extern int pthread_detach (pthread_t __th) __THROW;
***********************************************

[原]在linux中查看两个函数:
 find / -name pthread.h -print
 cd /usr/include
 grep -n 'pthread_join' ./pthread.h
 grep -n 'pthread_detach' ./pthread.h

目录
相关文章
|
存储 Linux API
【Linux进程概念】—— 操作系统中的“生命体”,计算机里的“多线程”
在计算机系统的底层架构中,操作系统肩负着资源管理与任务调度的重任。当我们启动各类应用程序时,其背后复杂的运作机制便悄然展开。程序,作为静态的指令集合,如何在系统中实现动态执行?本文带你一探究竟!
【Linux进程概念】—— 操作系统中的“生命体”,计算机里的“多线程”
|
并行计算 Linux
Linux内核中的线程和进程实现详解
了解进程和线程如何工作,可以帮助我们更好地编写程序,充分利用多核CPU,实现并行计算,提高系统的响应速度和计算效能。记住,适当平衡进程和线程的使用,既要拥有独立空间的'兄弟',也需要在'家庭'中分享和并行的成员。对于这个世界,现在,你应该有一个全新的认识。
469 67
|
算法 Unix Linux
linux线程调度策略
linux线程调度策略
613 0
|
Linux
Linux编程: 在业务线程中注册和处理Linux信号
通过本文,您可以了解如何在业务线程中注册和处理Linux信号。正确处理信号可以提高程序的健壮性和稳定性。希望这些内容能帮助您更好地理解和应用Linux信号处理机制。
315 26
|
Linux
Linux编程: 在业务线程中注册和处理Linux信号
本文详细介绍了如何在Linux中通过在业务线程中注册和处理信号。我们讨论了信号的基本概念,并通过完整的代码示例展示了在业务线程中注册和处理信号的方法。通过正确地使用信号处理机制,可以提高程序的健壮性和响应能力。希望本文能帮助您更好地理解和应用Linux信号处理,提高开发效率和代码质量。
338 17
|
Java API 调度
【JavaEE】——多线程(join阻塞,计算,引用,状态)
【JavaEE】——多线程,join,sleep引起的线程阻塞,多线程提升计算效率,如何获取线程的引用和状态
|
资源调度 Linux 调度
Linux C/C++之线程基础
这篇文章详细介绍了Linux下C/C++线程的基本概念、创建和管理线程的方法,以及线程同步的各种机制,并通过实例代码展示了线程同步技术的应用。
403 0
Linux C/C++之线程基础
|
存储 设计模式 NoSQL
Linux线程详解
Linux线程详解
|
安全 Linux
Linux线程(十一)线程互斥锁-条件变量详解
Linux线程(十一)线程互斥锁-条件变量详解
|
负载均衡 Linux 调度
在Linux中,进程和线程有何作用?
在Linux中,进程和线程有何作用?