首页 > 代码库 > pthread_exit
pthread_exit
pthread_exit:
- By having main() explicitly call pthread_exit() as the last thing it does, main() will block and be kept alive to support the threads it created until they are done.
就是说,main函数中调用pthread_exit的时候,进程不会退出,所以main创建的线程就不会退出,但是main的局部变量存储的堆栈应该已经释放了。见如下代码:
/****************************************************************************** FILE: hello_arg3.c* DESCRIPTION:* This "hello world" Pthreads program demonstrates an unsafe (incorrect)* way to pass thread arguments at thread creation. In this case, the* argument variable is changed by the main thread as it creates new threads.* AUTHOR: Blaise Barney* LAST REVISED: 07/16/14******************************************************************************/#include <pthread.h>#include <stdio.h>#include <stdlib.h>#define NUM_THREADS 8void *PrintHello(void *threadid){ long taskid; sleep(1); taskid = *(long *)threadid; printf("Hello from thread %ld\n", taskid); pthread_exit(NULL);}int main(int argc, char *argv[]){pthread_t threads[NUM_THREADS];int rc;long t;for(t=0;t<NUM_THREADS;t++) { printf("Creating thread %ld\n", t); rc = pthread_create(&threads[t], NULL, PrintHello, (void *) &t); if (rc) { printf("ERROR; return code from pthread_create() is %d\n", rc); exit(-1); } }pthread_exit(NULL);}
输出:
Creating thread 0Creating thread 1Creating thread 2Creating thread 3Creating thread 4Creating thread 5Creating thread 6Creating thread 7Hello from thread 140737488348392Hello from thread 140737488348392Hello from thread 140737488348392Hello from thread 140737488348392Hello from thread 140737488348392Hello from thread 140737488348392Hello from thread 140737488348392Hello from thread 140737488348392
当我们在pthread_exit(NULL)的前面加sleep(10)的时候输出是:
Creating thread 0Creating thread 1Creating thread 2Creating thread 3Creating thread 4Creating thread 5Creating thread 6Creating thread 7Hello from thread 8Hello from thread 8Hello from thread 8Hello from thread 8Hello from thread 8Hello from thread 8Hello from thread 8Hello from thread 8
另外需注意:void *类型表示没有指定类型的指针
参考资料:https://computing.llnl.gov/tutorials/pthreads/
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。