关于WaitForSingleObject信号量的问题

tonyyang8848 2015-05-28 10:30:25
WaitForSingleObject(
HANDLE hObject, //指明一个内核对象的句柄
DWORD dwMilliseconds);
如果hObject被多个线程WaitForSingleObject调用,那么hObject是不是也需要用临界区来进行线程同步
...全文
695 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
Saleayas 2015-05-29
  • 打赏
  • 举报
回复
她就是让多个线程来调用的。 那个线程获取她的使用权,就可以醒过来,否则就继续等待。
worldy 2015-05-29
  • 打赏
  • 举报
回复
内核对象,不需要另外再同步
redui 2015-05-29
  • 打赏
  • 举报
回复
hObject不需要临界区,但如果等待到信号后处理其他的任务可能需要临界区
zgl7903 2015-05-29
  • 打赏
  • 举报
回复
如果hObject也使用临界区, 那么这些等待的线程又都要访问到这个临界区, 那么临界区是不是也得再加临界区,临界区再加临界区…… 死循环了 WaitForSingleObject 在句柄无效时 会返回 WAIT_FAILED
shenyi0106 2015-05-29
  • 打赏
  • 举报
回复
多个线程调用时,一旦有信号,系统会择机选择一个等待着来唤醒。 至于谁会被唤醒,你最好还是去问微软 这是内核对象,不用同步,内核会帮你管理的妥妥的

15,466

社区成员

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

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