PTHREAD_EXIT - Linux手册页
Linux程序员手册 第3部分
更新日期: 2017-09-15
名称
pthread_exit-终止调用线程
语法
#include <pthread.h> void pthread_exit(void *retval); Compile and link with -pthread.
说明
pthread_exit()函数终止调用线程并通过retval返回一个值(如果该线程是可连接的)(在调用pthread_join(3)的同一进程中)可用于另一个线程。
由pthread_cleanup_push(3)建立但尚未弹出的所有清理处理程序都将被弹出(与它们被推送的顺序相反)并执行。如果线程具有任何线程特定的数据,则在执行清理处理程序之后,将以未指定的顺序调用相应的析构函数。
当线程终止时,不会释放进程共享的资源(例如互斥体,条件变量,信号量和文件描述符),并且不会调用使用atexit(3)注册的函数。
进程中的最后一个线程终止后,该进程终止,方法是调用退出状态为零的exit(3);因此,将释放进程共享的资源,并调用使用atexit(3)注册的功能。
返回值
此功能不会返回到调用者。
错误说明
此功能始终成功。
属性
有关本节中使用的术语的说明,请参见attribute(7)。
Interface | Attribute | Value |
pthread_exit() | Thread safety | MT-Safe |
遵循规范
POSIX.1-2001,POSIX.1-2008。
备注
从主线程以外的任何线程的start函数执行返回都会导致对pthread_exit()的隐式调用,将函数的返回值用作线程的退出状态。
为了允许其他线程继续执行,主线程应通过调用pthread_exit()而不是exit(3)来终止。
retval指向的值不应位于调用线程的堆栈上,因为在线程终止后,该堆栈的内容是未定义的。
BUGS
当前,内核实现逻辑中对于在具有死线程组领导者的已停止线程组上进行wait(2)的操作存在一些限制。如果停止信号发送到其线程组负责人已调用pthread_exit()的前台进程,则这可能会表现为诸如锁定终端的问题。
另外参见
pthread_create(3),pthread_join(3),pthreads(7)
出版信息
这个页面是Linux手册页项目5.08版的一部分。有关项目的说明、有关报告错误的信息以及此页面的最新版本,请访问https://www.kernel.org/doc/man-pages/。