我通过一个主程序,起了4个子程序,有共享内存区等,其中在做一个多进程同步的时候,每个进程都把控制同步的event进行了setevent后,却总有进程的waitformultipleobjects出现问题,一直在等待,但不是所有在等待,有的进程推进过去了,并且还没有把它的信号量reset,不知道为什么,单步调试的话全部正常,在waitformultiple后sleep(1)后也正常,但不许sleep,原因不清楚啊,向高手求解,谢谢,另外,semaphore这个东西在多进程同步中如何用比较好呢,是等完了他再-1,还是等就-1呢,不是很清楚,注:分数主要给前面一个问题,后面的谢谢友情帮助了啊,谢谢各位大虾了啊

解决方案 »

  1.   

    我来说说,不知道对不对啊.事件对象一种是人工重置的事件,另一种是自动重置的事件,人工重置的事件在变为有信号时,会唤醒所有等待该事件的进程.而自动重置的事件只会唤醒其中的一个.估计你创建的是自动重置的事件.在createevent()时将第二个参数设为true可以创建人工重置事件.
      

  2.   

    sleep()会使当前的线程交出自己剩余的时间片 允许别的线程变为可调度线程