线程等待 推荐WaitForSingleObject() 不推荐busyLoop

来源:互联网 发布:花木兰锐雯淘宝多少钱 编辑:程序博客网 时间:2024/06/01 09:25

busy Loop

是这样的:

for()比如百万次的空循环。

for中什么也不做。

但是cpu没有闲着,线程依然在占用着cpu,只是cpu干的事情没有意义,在走for循环


如果想让线程等待几秒后,继续运行,不推荐busy loop。而推荐WaitForSingleObject()方法


WaitForSingleObject()方法,可以等待多个windows核心对象。

1.信号量semaphores)和互斥器(mutexes)可记录红灯绿灯状态;

2.文件对象可告诉我们一个I/O操作何时完成;

3.线程对象则一如所见,可以告诉我们它何时结束。


WaitForSingleObject( 线程对象的handle_1 )

当线程handle_1结束的时候,WaitForSingleObject()函数就返回了。


可被WaitForSingleO bject() 使用的核心对象有两种状态:激发与未激发。WaitForSingleObject()会在目标物变成激发状态时返回。


当线程正在执行时,线程对象处于未激发状态。当线程结束时,线程对象就被激发了。因此,任何线程如果等待的是一个线程对象,将会在等待对象结束时被调用,因为当时线程对象自动变成激发状态。


0 0