当前位置:C++技术网 > 资讯 > 在主线程里判断子线程问题.

在主线程里判断子线程问题.

更新时间:2016-09-15 08:42:30浏览次数:1+次

在主线程里开一个子线程,想在子线程执行完成后,再回来执行主线程下面的代码. 用WaitForSingleObject会引起主线程假死,在主线程里SetTimer也不行.怎么办呢


C++技术网解答:

    WaitForSingleObject是等待信号量的函数,第一个参数是句柄,就是你要等待的线程句柄,第二个参数是等待超时时间,如果为-1,就是死等,其他时间值的时间内没等到函数就返回了。返回值有几个,只有信号量触发了即等待的线程结束了才是成功的,其他都是等待不成功的。具体返回值请查msdn。

    函数使用,请仔细阅读文档,都有详细解释的。直接问msdn是最好的,因为函数太多了,谁也不能保证都用过。

    在实现上,主界面的线程,一般是主线程不要做这种事,主线程主要是做用户交互的处理,这才是好的体验。不然动不动卡住了,体验就太差了。在这个问题上,等待另一个线程退出,这个很难预测,短时间可能不会退出,为了体验等待时间短了,程序经常功能有问题。等待时间长了,体验糟糕。

    最好是重新创建一个新线程来处理这个事情,死等。保证一定等到结果,也不会导致程序假死。

    最后,祝中秋快乐。这是手机打字解答的~