pthread_exit函数用法详解
pthread_exit函数简介
- 头文件包含
#include <pthread.h>
- 函数定义
void pthread_exit(void * retval );
- 编译链接选项
-pthread
pthread_exit函数常见使用错误
- 链接错误
undefined reference to `pthread_exit'
解决办法:添加链接选项
-pthread
- 编译错误
warning: implicit declaration of function ‘pthread_exit’ [-Wimplicit-function-declaration]
解决办法:包含头文件
#include <pthread.h>
pthread_exit函数详细描述
pthread_exit ()函数终止调用线程,并通过retval返回一个值,该值(如果线程是可接合的)可用于调用pthread_join (3)的同一进程中的另一个线程
由pthread_cleanup_push (3)建立的任何尚未弹出的清理处理程序都将弹出(与它们被推入的顺序相反)并执行。如果线程具有任何特定于线程的数据,则在执行清理处理程序后,将以未指定的顺序调用相应的析构函数。
当线程终止时,进程共享资源(例如,互斥量、条件变量、信号量和文件描述符)不会被释放,使用atexit (3)注册的函数也不会被调用。
进程中的最后一个线程终止后,该进程通过调用退出状态为零的exit (3)来终止as;因此,进程共享资源被释放,使用atexit (3)注册的函数被调用。
pthread_exit函数返回值
此函数不返回给调用方。
pthread_exit函数错误码
这个函数总是成功的。
pthread_exit函数其他说明
从主线程以外的任何线程的start函数执行返回会导致使用函数的返回值作为线程的退出状态来隐式调用pthread_exit ()。
为了允许其他线程继续执行,主线程应该通过调用pthread_exit ()而不是exit (3)来终止
retval指向的值不应该位于调用线程的堆栈上,因为该堆栈的内容在线程终止后是未定义的。
评论区