多线程设计是否需要考虑线程异常终止的情况。
比如说。 我在线程里用了锁,在上锁的之后线程因为系统的其它原因(如:系统资源缺乏或被一些工具软件强行终止了)那么我在线程设计的时候要不要考虑这些情况呢?

解决方案 »

  1.   

    如何是线程自己运行的代码出了问题,一定要会错误捕捉机制,使用如下语句:
    __try
    {
       WaitForSingleObject(hMutex,INFINITE);
       ...
       ReleaseMutex(hMutex);
    }
    __catch(EXCEPTION_EXECUTE_HANDLE)
    {
       ReleaseMutex(hMutex);  
    }
    当前线程中如何WaitForSingleObject与ReleaseMutex之前的代码出了问题,那么__Catch语句就会出现捕捉到,然后释放互斥。如果没有__catch,一旦代码执行出错,另的线程等待这个互斥时,如果只等待若干秒,就会返回WAIT_ABANDONED,如果无限等限,就会产生死锁问题。所以多线程设计需要考虑线程异常终止情况如果是其他的人为外在原因产生问题,程序员就不需要考虑了。
      

  2.   

    刚才写错了,应该是:
    __try 

      WaitForSingleObject(hMutex,INFINITE); 
      ... 
      ReleaseMutex(hMutex); 

    __except(EXCEPTION_EXECUTE_HANDLE) 

      ReleaseMutex(hMutex);  

    所有的__catch改成__except