用于结束某个线程,并使用pthread_joinu获取线程退出状态
函数原型,以及包含的头文件
#include <pthread.h>
void pthread_exit(void *retval);
案例:线程结束,返回-1
#include <pthread.h>
#include <stdio.h>
void *print_hello(void *arg) {
printf("Hello from thread!\n");
pthread_exit((void *)-1);
}
int main() {
pthread_t thread;
int result = pthread_create(&thread, NULL, print_hello, NULL);
if (result != 0) {
printf("Error creating thread\n");
return 1;
}
void *status;
result = pthread_join(thread, &status);
if (result != 0) {
printf("Error joining thread\n");
return 1;
}
printf("Thread exited with status %d\n", (int)status);
return 0;
}
【注意】
代码中定义status为void *,而不是int status;
整型是4个字节,指针是8个字节,pthread_join是将status的指针传递进去,若定义为整型,其在栈区存储,指针传进去是8个字节,会破坏栈结构