如何等待一个线程结束

clever101
博客专家认证
2007-11-15 07:38:14
现在我做一个图像处理系统。图像处理是这样的:
1.先开一个线程进行某一项图像处理(输入一个文件,生成一个处理后的图像文件)。

2.待处理结束后把处理后的图像文件显示在客户区。

我的想法是这样的:
1.CreateThread开线程

2.通过OpenThread获取进程句柄

3.WaitforsingleObject来等待线程结束。

现在的问题是我还是不知道线程什么时候结束。因为WaitForSingleObject的用法

DWORD WaitForSingleObject( HANDLE hHandle, DWORD dwMilliseconds);参数hHandle是一个事件的句柄,第二个参数dwMilliseconds是时间间隔。如果时间是有信号状态返回WAIT_OBJECT_0,如果时间超过dwMilliseconds值但时间事件还是无信号状态则返回WAIT_TIMEOUT。

我不能设置等待时间,因为处理大图像和处理小图像的时间是不一样的。如果参数dwMilliseconds为INFINITE时函数将直到相应时间事件变成有信号状态才返回,否则就一直等待下去,直到WaitForSingleObject有返回直才执行后面的代码。这里的相应时间事件变成有信号状态才返回呢?可以理解为线程结束吗?
...全文
275 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
zxd_0511 2007-11-18
  • 打赏
  • 举报
回复
一楼的办法可行,如果想用Waitforsingleobject,可以设置一个事件,当线程结束时设置信号,这样其他线程就可以继续工作。
可以认为这是一个线程同步的问题,只是这两个线程比较极端,一个结束另一个才开始,并且是子线程和主线程之间的同步。
jpinglove 2007-11-16
  • 打赏
  • 举报
回复
可以啦
wshcdr 2007-11-15
  • 打赏
  • 举报
回复
可以理解为线程结束了
WingForce 2007-11-15
  • 打赏
  • 举报
回复
可以
WooSir 2007-11-15
  • 打赏
  • 举报
回复
可以理解为线程结束。我比较喜欢用消息通知线程结束了:可以用PostMessage或PostThreadMessage,这样主线程可以做其他的

15,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧