windows API主线程如何等待子线程结束后再继续运行
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了windows API主线程如何等待子线程结束后再继续运行相关的知识,希望对你有一定的参考价值。
我在主线程里利用
hThread1 = CreateThread(NULL,0,ThreadProc1,NULL,0,NULL);
hThread2 = CreateThread(NULL,0,ThreadProc2,NULL,0,NULL);
hThread3 = CreateThread(NULL,0,ThreadProc3,NULL,0,NULL);
创建了三个子线程,如何使子线程运行结束后主线程再继续运行呢??
因为我是主要是想在子线程里实现死循环,所以在子线程里设置信号量不行。。。
调用前,将thread1.……都设置为0,然后调用子程序,子程序调用结束时,设对应变量为1...
这样,主程序只要等所有子程序变量都为1时,就可以继续运行了。
示例:
定义全局变量
static int thread1=0;
...
然后主程序调用
hThread1 = CreateThread(NULL,0,ThreadProc1,NULL,0,NULL);
...
在调用的子程序结束时,添加:
thread1=1;
然后主程序判断:
loop:
if( thread1=1 and thread2=1 and thread3=1 )
goto end;
else goto loop;
end;
这样就能等所有子程序都执行完再继续了 参考技术A 可以添加信号量,在主程序中等待,当子线程全部置过信号量之后,主线程继续执行本回答被提问者采纳
以上是关于windows API主线程如何等待子线程结束后再继续运行的主要内容,如果未能解决你的问题,请参考以下文章
如何实现线程互等,线程2等待线程1结束后才继续执行。(可设置标志位) 求源代码