各位高手,我刚学vc所以可能描述问题不是很清楚。我想在一个线程中某个地方将他阻塞不向下运行,(但不是挂起因为我想要的是循环的效果)不能用sleep,while,而且在别的线程中随时能够解除阻塞(如按个按钮),使其能够向下执行。请问应该用什么方法呢。谢谢

解决方案 »

  1.   

    用Synchronization Objects就行了,比如用Event Object先CreateEvent并且ResetEvent,然后在线程中调用WaitForSingleObject就能阻塞了。要想唤起线程,在别的线程中调用SetEvent就可以了。楼主可以看看《Windows核心编程》或者看看MSDN中关于Synchronization的部分
      

  2.   

    阻塞:
    CEvent m_pEvtThread = new CEvent(FALSE, TRUE, NULL, NULL);
    m_pEvtThread->ResetEvent();//初始化为无信号
    m_pEvtThread->Lock(INFINITE);//阻塞m_pEvtThread->SetEvent();//解除阻塞