我的想法是这样的:
thread1()
{while(waitforsingleObject(event1,INFINITE)==WAIT_TIMEOUT)
{fun;}
退出线程:
setevent(event1)这样能不能保证线程里的循环只有等到Setevent的时候才安全退出?

解决方案 »

  1.   

    可以退出,但你这样做的话,event1无信号时,子线程是阻塞的,根本执行不到fun。
      

  2.   

    INFINITE这个是不是可以改成一个时间啊
      

  3.   

    INFINITE又判断WAIT_TIMEOUT?想清楚点吧
      

  4.   

    WaitForSingleObject的话会因线程切换而带来性能损失,
    直接设置个全局变量就行了.int e;while(e)
    {
    // ...
    }e = 0;
      

  5.   

    waitforsingleObject(event1,INFINITE)这个会无限期的等下去,循环里的东西不可能会被执行的.因为条件不可能会被触发.
      

  6.   

    while(Flag)  //Flag为全局BOOL类型变量
    {
        if(WaitForSingleObject(event1,0)==WAIT_TIMEOUT)//event1无信号会立即返回
        {
           fun();
        }
        else     //有信号
        {
           Flag=FALSE;
        }
        return 0;
    }
      

  7.   

    纠正一下 return 0 应在while循环外