社区
C语言
帖子详情
WaitForMultipleObjects中参数的问题
wwangzhihang100
2009-01-09 01:31:12
如我我使用
WaitForMultipleObjects
函数
里面的事件都是semaphor的事件,例如
sema[0], sema[1], sema[2]三个事件
那么WaitForMultipleObjects(3, sema, false, infinity)触发的时候,sema[i]是怎么变化的?
例如只有sema[0]有信号,那么sema[1]和sema[2]变化吗?
或者三个都有信号,那么wait之后三个信号量都减1么?谢谢
...全文
206
4
打赏
收藏
WaitForMultipleObjects中参数的问题
如我我使用WaitForMultipleObjects函数 里面的事件都是semaphor的事件,例如 sema[0], sema[1], sema[2]三个事件 那么WaitForMultipleObjects(3, sema, false, infinity)触发的时候,sema[i]是怎么变化的? 例如只有sema[0]有信号,那么sema[1]和sema[2]变化吗? 或者三个都有信号,那么wait之后三个信号量都减1么?谢谢
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
4 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
gg16578
2009-02-01
打赏
举报
回复
www.itstudy.net
捕鲸叉
2009-02-01
打赏
举报
回复
可以在只有一个有信号的情况下返回,也可以只在三个都有信号的情况下返回,由参数BOOL bWaitAll 指定
ckt
2009-01-09
打赏
举报
回复
DWORD WINAPI WaitForMultipleObjects(
__in DWORD nCount,
__in const HANDLE* lpHandles,
__in BOOL bWaitAll,
__in DWORD dwMilliseconds
);
作用:等待一个或所有指定的对象为信状态,或等待超时返回.
参数:nCount -
lpHandles指向的句柄数组中的句柄个数.最大值为MAXIMUM_WAIT_OBJECTS
lpHandles -
句柄数组,数组可包含多种不同类型的句柄.句柄必须有SYNCHRONIZE访问权.
如果其中的一个句柄关闭而函数还在等待,则为未定义行为.
bWaitAll -
该值为TRUE,表示当所有等待的对象都为信状态时才返回.
FALSE则表示等待的对象中有一个为信状态就返回.
dwMilliseconds -
等待超时期限.若该值为0表示测试所有句柄的状态后马上返回.
返回:WAIT_OBJECT_0 to (WAIT_OBJECT_0 + nCount– 1) -
若bWaitAll为TRUE,函数返回表示所有等待的对象都为信状态.
若bWaitAll为FALSE,返回等待对象的句柄在数组中的索引,WAIT_OBJECT_0为0索引开始.
WAIT_ABANDONED_0 to (WAIT_ABANDONED_0 + nCount– 1) -
若bWaitAll为TRUE,表示所有等待对象都已经为信状态,且至少有1个对象为无约束的mutex obj.
若bWaitAll为FALSE,返回等待到的无约束对象句柄在数组中的索引,WAIT_ABANDONED_0为0索引开始.
WAIT_TIMEOUT -
等待超时.
WAIT_FAILED -
函数失败.
备注:等待多个内核对象的时候,如果它的bWaitAll参数设置为false.其返回值减去WAIT_OBJECT_0
就是参数lpHandles数组的序号.如果同时有多个内核对象被出发,这个函数返回的只是其中序号
最小的那个.多个内核对象被触发时,WaitForMultipleObjects选择其中序号最小的返回.
而WaitForMultipleObjects它只会改变使它返回的那个内核对象的状态.
tocpve
2009-01-09
打赏
举报
回复
我想 你既然传递了的false参数 WaitForMultipleObjects 应该每次只返回一个信号吧
sema[i] 怎么变化?
c语言socket多线程编程限制客户端连接数
先上一些多线程需要使用的函数定义: 代码如下:DWORD WINAPI ... //这里比较简单,&clientsocket是个指针,是从主线程传入新线程的
参数
Wait
For
Multiple
Object
s(MAXCLIENTS, threads, TRUE, INFINITE); //
Wait
For
Multiple
Object
s等待多对象用法说明
而实际编码
中
,我们会遇到需要等待多个对象同时符合条件或者多个对象
中
的一个符合条件就执行某个事件,而本文讨论的
Wait
For
Multiple
Object
sAPI就可以满足同时监控多个对象的需求。为了对比它们的差异点,下面分...
Wait
For
Multiple
Object
s
功能: 进程在该函数处等待(即暂停在此处),直到被指定的其
中
一个或者全部信号触发 也或者超过了...DWORD
Wait
For
Multiple
Object
s( DWORD nCount, const HANDLE *lpHandles, BOOL b
Wait
All, DWORD dwMill...
使用
Wait
For
Multiple
Object
s时注意的
问题
使用
Wait
For
Multiple
Object
s时注意的
问题
今天处理了一个客户端控件的BUG。这个控件会创建几个线程,每个线程链接服务器下载数据文件及图片等内容。昨天有用户反映在他机器上不能正常获得下载数据,后来经了解用户...
关于
Wait
For
Multiple
Object
s返回值得
问题
如果因时间终了而返回,那返回值是
WAIT
_TIMEOUT 如果b
Wait
All是TRUE,那么返回值是... 如果函数失败,则返回
WAIT
_FAILD,这时候你可以用GetLastError()找出失败原因 b
Wait
All 为第三个
参数
C语言
69,382
社区成员
243,073
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章