About WaitForSingleObject

Windows的API,类似的还有WaitForMultipleObjects


以上两个api都是要等待Object被标记为有信号(signaled)才会return。windows中设置有信号量,信号量的作用简单理解为标志位。(比如文件的读写,当信号量为FALSE,表明未锁,任意线程可进行访问;否则,信号量为TRUE,则禁止其他线程进行访问)

使用场景:线程A, 线程B, 都要进行访问文件。线程A先行访问文件,线程B在等待。(此时线程B就在一个死循环中,一直尝试去打开文件,此死循环会占用大量内存),这种时候,就该利用到WaitForSingleObject了。

最强目的:WaitForSingleObject会让线程B在等待的过程中,进入一个超高效的沉睡等待状态,只占用极少的CPU时间片

已上就是此API的强势讲解了。

接下来说一下使用方式。

格式

DWORD WaitForSingleObject( HANDLE hHandle, DWORDdwMilliseconds);

有两个参数,分别是THandle和Timeout(毫秒单位)。

如果想要等待一条线程,那么你需要指定线程的Handle,以及相应的Timeout时间。当然,如果你想无限等待下去,Timeout参数可以指定系统常量INFINITE。

使用对象

Event, Mutex, Semaphore, Process, Thread

返回类型

WAIT_OBJECT_0, 表示等待的对象有信号(对线程来说,表示执行结束);

WAIT_TIMEOUT, 表示等待指定时间内,对象一直没有信号(线程没执行完);

WAIT_ABANDONED 表示对象有信号,但还是不能执行 一般是因为未获取到锁或其他原因

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值