如何暂停主线程直到第二个线程的终止?

如何暂停主线程直到第二个线程的终止?

来自 http://www.codeproject.com/threads/waitthreadmsi.asp#xx441032xx

By Ybbozman

不要被线程这个词给吓坏了,留下来先看看吧;)

作为翻译这篇短文的我在VC++开发中遇到了与 Ybbozman 相类似的问题,在主应用程序中(主进程-其实还是线程,称主线程也可),点击“查找”按钮时,我作了一个搜索的递归查找文件的事件-这个事件将非常慢,结果是导致界面重绘明显变慢、cpu资源占用率非常高,原因是windows抢先式多任务将此主线程的优先级置为最高,查找文件事件是作为这个主线程正在执行的事件,cpu大部分的时间片会交给查找文件事件,而界面重绘的操作速率将变得不可预知。

为这个查找文件事件启动一个新的工作线程,是非常高效的,查找文件事件在新的工作线程中工作,但优先级是不会高于当前主线程的,这就保证了界面重绘操作的正常进行,问题是我想在查找文件事件完成后再继续执行主线程的某些操作,这就涉及到线程之间等待-wait(称之为同步-Synchronization更好些)的问题,Ybbozman 的问题与我这个问题有些类似,下面看一下Ybbozman 是如何解决线程之间等待的问题。

简介

 

几周前,我需要制作一个对话框将它作为MSI安装程序(Windows2000的软件安装)的一部分,为此所写的代码必须是作为一个Regular(规则)DLL发布。这个对话框是否可见,完全依赖于安装完成的结果,即该功能依赖于另一个线程(在这里是正在进行的安装过程的工作线程)完成,安装完成后这个线程被终止,并最终显示这个对话框。

 

解决

  • 5
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值