首先,return 语句和 pthread_exit() 函数的含义不同: return 的含义是返回,它不仅可以用于线程执行的函数,普通函数也可以使用; pthread_exit() 函数的含义是线程退出,它专门用于结束某个线程的执行。 在主线程(main() 函数)中,return 和 pthread_exit() 函数的区别最明显。举个例子: 1#include <stdio.h>2#...
pthread_join一般是主线程来调用,用来等待子线程退出,因为是等待,所以是阻塞的,一般主线程会依次join所有它创建的子线程。pthread_exit一般是子线程调用,用来结束当前线程。子线程可以通过pthread_exit传递一个返回值,而主线程通过pthread_join获得该返回值,从而判断该子线程的退出是正常还是异常。
如图可以看到主线程退出前,结构体数组info中存储着ID和name, 主线程通过pthread_exit(NULL) 退出后,主线程中的变量info将销毁不能访问。 4.主线程退出前等待子线程 1for(inti =0; i < MAX_NUM; i++){2intret=pthread_join(tids[i], &status);3//int ret=pthread_detach(tids[i]);4} 以上为Windows...
main函数的return,相当于是在线程中调用了系统函数exit(任何线程半路调用exit,都会导致进程终止),表示直接终止了整个进程,那么操作系统会把当前进程所有的资源,包括内存、io、线程、管道、fd等全部终止使用并且回收,相当于进程啥都没了 而pthread_exit,仅仅只是结束当前线程,进程地址空间还在,所有的资源也都在,其他线程...
abort exit _exit return的区别 2019-12-11 20:47 − exit()函数导致子进程的正常退出,并且参数status&这个值将被返回给父进程。exit()应该是库函数。exit()函数其实是对_exit()函数的一种封装(库函数就是对系统调用的一种封装)。 _exit()函数终止调用的进程,进程所有的文件描述符(在linux中一切皆文件)...
linux下主线程return 0和pthread_exit(NULL)的区别,1.当linux和Windows中,主线程以return0结束时,程序会在主线程运行完毕后结束.2.当linux中,主线程以pthread_exit(NULL)作为返回值,则主线程会等待子线程.#include<stdio.h>#include<unistd.h>#include
1.当linux和Windows中,主线程以return 0结束时,程序会在主线程运行完毕后结束.2.当linux中,主线程以pthread_exit(NULL)作为返回值,则主线程会等待子线程.#include<stdio.h> #include<unistd.h> #in