我封装了一个线程类,但挂起的方法不知道用什么好,直接SuspendThread函数不能保证在何处挂起,可能有线程未退出临界区导致死锁,不太安全。
我看到有人说用WaitSingleObeject + 事件, 可是应该如何实现? 望指点

解决方案 »

  1.   

    创建一个Event,需要挂起线程时,WaitForSingleObject等待,继续的时候,SetEvent
      

  2.   

    创建一个Event,需要挂起线程时,WaitForSingleObject等待,继续的时候,SetEvent
      

  3.   

    也可以用互斥,但本质上还是和1楼的事件一样的,
    也都是调用WaitForSingleObject来达到同步的
      

  4.   

    用一个变量,无法挂起,
    用内核对象event,性能低下。(这段描述,为何性能低下:
        
         你在线程里需要不断地测试事件是否已经设置:
         用 WaitForSingleObject 函数, 不断地尝试,每一次都要进入内核。
    )你应该用变量对event对象做避让,这样又可以挂起,又在尝试的时候避让了进入内核的可能性。
      

  5.   

    因人而异了,方法很多,我还是喜欢从线程内部进行挂起。建立一张线程 handle 和 id表,创建线程是添加上,在要挂起的地方,getcurrentthreadid(),通过id找到handle,然后挂起线程
      

  6.   

    看到3楼的MVP和他的回复。我震惊了。。