进程间waitformultipleobjects问题

zyl4447473 2008-08-30 10:41:32
我通过一个主程序,起了4个子程序,有共享内存区等,其中在做一个多进程同步的时候,每个进程都把控制同步的event进行了setevent后,却总有进程的waitformultipleobjects出现问题,一直在等待,但不是所有在等待,有的进程推进过去了,并且还没有把它的信号量reset,不知道为什么,单步调试的话全部正常,在waitformultiple后sleep(1)后也正常,但不许sleep,原因不清楚啊,向高手求解,谢谢,另外,semaphore这个东西在多进程同步中如何用比较好呢,是等完了他再-1,还是等就-1呢,不是很清楚,注:分数主要给前面一个问题,后面的谢谢友情帮助了啊,谢谢各位大虾了啊
...全文
77 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
zyl4447473 2008-09-02
  • 打赏
  • 举报
回复
问题已经解决了,进程同步控制上要求比较高,需要主要信号量的变换和进程间切换关系,谢谢各位了
c38041125 2008-08-31
  • 打赏
  • 举报
回复
我来说说,不知道对不对啊.事件对象一种是人工重置的事件,另一种是自动重置的事件,人工重置的事件在变为有信号时,会唤醒所有等待该事件的进程.而自动重置的事件只会唤醒其中的一个.估计你创建的是自动重置的事件.在createevent()时将第二个参数设为true可以创建人工重置事件.
pangqi022 2008-08-31
  • 打赏
  • 举报
回复
sleep()会使当前的线程交出自己剩余的时间片 允许别的线程变为可调度线程
pangqi022 2008-08-31
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 c38041125 的回复:]
我来说说,不知道对不对啊.事件对象一种是人工重置的事件,另一种是自动重置的事件,人工重置的事件在变为有信号时,会唤醒所有等待该事件的进程.而自动重置的事件只会唤醒其中的一个.估计你创建的是自动重置的事件.在createevent()时将第二个参数设为true可以创建人工重置事件.
[/Quote]
对的~
zyl4447473 2008-08-30
  • 打赏
  • 举报
回复
莫非周六没高手,跪求高手解答阿

15,466

社区成员

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

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