我用一个CEvent事件来控制线程的运行,当线程完成一次运算后就复位等待的事件,然后用定时器来启动事件。
假如事件被启动,线程在运行过程中,当定时器事件到达之前没有完成一次运算,这时重新启动事件会不会有什么影响?或者说因为事件本身就被启动了,所以不会有什么效果?

解决方案 »

  1.   

    不会。启动之后 ,线程没有运行到 WAIT 的地方。但是,如果运算的时间超过了计时器的时间间隔,那么可能就会一直在计算,然后 计算机的CPU 占用率可能会很高(达到100%)
      

  2.   

    如果是两个线程对同一段数据区进行读/写操作的话,是一定要用到边界量和互斥量的,互斥很简单,声明全局的CMetux的一个变量,然后哪读/写就在哪用,锁住即可。
      

  3.   

    最好是一个线程搞完了之后,再SetEvent.
      

  4.   

    如果只是2个线程的读写问题,可以使用mutex和event
      

  5.   

    用CriticalSection或者Mutex实现互斥,用event来实现事件通知,是比较流行的做法
    你在第一个帖子中的做法也不是不可以,可以在定时器中判断Event是否“没信号”的状态
    WaitForSingleObject(hEvent,0)==TIME_OUT
    不过不建议你这么做,除非你的逻辑一定要求这么处理,而且,写全局变量不加保护是危险的