PTHREAD_EXIT - Linux手册页

时间:2019-08-20 18:01:03  来源:igfitidea点击:

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)。

InterfaceAttributeValue
pthread_exit()Thread safetyMT-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/