常州钟楼建设局网站,保健食品东莞网站建设,镇江建站,wordpress熊掌号改造pthread_t tid;
使用方式#xff1a;pthread_join(tid,NULL); 为什么要使用pthread_join()#xff1f;
在很多情况下#xff0c;主线程生成并起动了子线程#xff0c;如果子线程里要进行大量的耗时的运算#xff0c;主线程往往将于子线程之前结束#xff0c; 但是如果主…
pthread_t tid;
使用方式pthread_join(tid,NULL); 为什么要使用pthread_join()
在很多情况下主线程生成并起动了子线程如果子线程里要进行大量的耗时的运算主线程往往将于子线程之前结束 但是如果主线程处理完其他的事务后需要用到子线程的处理结果也就是主线程需要等待子线程执行完成之后再结束这个时候就要用到pthread_join()方法了。 即pthread_join()的作用可以这样理解主线程等待子线程的终止。也就是在子线程调用了pthread_join()方法后面的代码只有等到子线程结束了才能执行。 代码实验
可以通过代码来看看执行的效果就知道了
[cpp] view plain copy
#include stdafx.h #include pthread.h #include stdio.h #include Windows.h #pragma comment(lib, pthreadVC2.lib) static int count 0; void* thread_run(void* parm) { for (int i0;i5;i) { count; printf(The thread_run method count is %d\n,count); Sleep(1000); } return NULL; } int main() { pthread_t tid; pthread_create(tid, NULL, thread_run,NULL); // 加入pthread_join后主线程main会一直等待直到tid这个线程执行完毕自己才结束 // 如果项目中需要子线程计算后的值就需要加pthread_join方法 pthread_join(tid,NULL); // 如果没有join方法可以看看打印的顺序 printf(The count is %d\n,count); getchar(); return 0; } 加了pthread_join()方法的打印 如果把里面的pthread_join()方法注释掉的打印 可以看得出来如果没有加pthread_join()方法main线程里面直接就执行起走了加了之后是等待线程执行了之后才执行的后面的代码 join()就是主线程等待子线程执行完毕之后再回收其占用的资源之后再接着向下执行。