因为很多API函数对阻塞 线程,例如访问硬件、INTERNET,因此当检测到线程无响应时,需要释放线程来处理。这里用了TerminateThread来释放。我想知道,这个释放是怎么执行的,如果阻塞,它能强制释放线程吗,也就是这个函数是不是肯定能释放线程?然后MsgWaitForMultipleObjects,对于执行了TerminateThread的线程,是否一定能侦听到线程结束?
对于这种被强制释放的线程,MsgWaitForMultipleObjects的返回值是什么?

解决方案 »

  1.   

    TerminateThread是不会真正的终止线程的,至少对于TThread是这样的。
      

  2.   

    MsgWaitForMultipleObjects 强制释放和正常释放 应该返回结果是一样的 
      

  3.   

    因为那种阻塞的情况,是偶发的,很难测试时再现,所以无法准确测试。rainychan2009,如果并未真正释放,那侦听的返回值,也是正在执行了?并且,遇到这种阻塞多了,多次假释放后,会造成资源不足的错误吧。