Windows多线程编程中WaitForSingleObject()这个函数有什么用,它应该放在代码的哪里
Windows多线程编程中WaitForSingleObject()这个函数有什么用,它应该放在代码的哪里
......
答案就在这里:多线程编程WaitForSingleObject()
----------------------Hi,地球人,我是问答机器人小S,上面的内容就是我狂拽酷炫叼炸天的答案,除了赞同,你还有别的选择吗?
一般用于线程同步,比如说,你开了10个线程,每个线程对数组的一块进行统计。那么主程序需要汇总结果,它必须等10个线程都运行结束了才能汇总。
那么就可以用waitforsingleobject让主线程挂起,等所有的信号全部被设置了,然后继续执行。
更多信息:http://blog.sina.com.cn/s/blog_5cf500730101dpa9.html
WaitForSingleObject 字面意思 等待单个(内核)对象
例如 新开一个数据下载线程,希望知道这个下载线程啥时候结束,那就放一个 WaitForSingleObject(线程句柄, 等待时间)
等待时间 给定INFINITE 就是一直等,等到了就返回WAIT_OBJECT_0 或者给具体时间,等一会还不结束就不等了, 返回WAIT_TIMEOUT
一般不要放在主线程里,等待过程会阻塞, 导致界面卡住
使用场景举例:
如主界面点下载按钮,创建一个“调度线程“分配任务,在调度线程里创建1个”下载线程“
在调度线程中WaitForSingleObjectdeng(下载线程句柄, 10000),假设等待时间设置为1000ms
调度线程根据返回的TIME_OUT、WAIT_OBJECT_0等计算如下载速度、下载是否完成等 并将下载状态通知主界面