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,thread2...
调用前,将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结束后才继续执行。(可设置标志位) 求源代码

c++/mfc 子线程结束后再来执行主线程下操作 该怎么处理

Java主线程如何等待子线程执行结束(转)

主线程啥都没做,就会等待子线程结束。这是为啥?

Java Thread.join()详解--父线程等待子线程结束后再结束