怎么判断一个线程超时,结束它。不用terminate thread 那样释放不干净,假设线程里有个函数,怎么判断超过3秒钟,就结束它。来个例子最好

解决方案 »

  1.   

    不用terminate thread没有办法
    这个函数正在执行你怎么结束
      

  2.   

    线程如何判断超时?
    你的要求很怪异,如果单纯的从自己的角度来控制线程超时的话,很简单,可以用event,然后把event传给线程,让其在3秒内设置信号,外部线程等待3秒,这样就可以起到等待超时的作用。
    但是从系统角度来讲,线程没有提供超时的手段,线程的状态只有 活动、挂起等状态,没有超时这个状态。
    至于结束线程,如果你想干净的让线程结束,就必须的从内部让其自己退出,至于你用什么手段让其自己退出,那就是你的程序设计的问题了。
      

  3.   

    是不是你的需求没说清楚啊
    判断线程超时没有意义啊。当然,你可以通过传递消息等手段,当超过3秒得时候强制让你的线程函数return.这样线程就结束了
      

  4.   

    waitforsignalobject里不是就能设置等待时间么?
    等待后还没完,可以干别的。直到他自己完成吧。强行终止只能teminal
      

  5.   

    http://blog.csdn.net/acrodelphi/article/details/1378399
      

  6.   

    用等待函数就可以了,WaitForMultipleObjects 或 WaitForSingleObject,最后一个参数传等待时间。时间到后,这个函数会返回WAIT_TIMEOUT,根据这个消息退出等待循环就可以退出线程了。