代码之家  ›  专栏  ›  技术社区  ›  sum1stolemyname

检测过时的互斥体

  •  1
  • sum1stolemyname  · 技术社区  · 14 年前

    运行时是否有任何技术或工具可以检测这种死锁?

    在工作线程(通常是4-6个线程中的一个)中想象这一点。

    try
       WaitForSingleObject(myMutex);
       DoSTuffThatMightCauseAnException;
    except
       ReleaseMutex(myMutex);
    end;
    

    或者更普遍地说,是否有一个设计模式来避免这种错误?

    在一次较长的黑客攻击之后,我在小房子里对上述代码进行了编码。

    1 回复  |  直到 14 年前
        1
  •  6
  •   Remy Lebeau    14 年前

    更好的编码风格是使用try/finally而不是try/,除了mutex发行版(或任何其他类型的资源发行版,就这点而言),即:

    try
      WaitForSingleObject(myMutex); 
      try 
        DoSTuffThatMightCauseAnException; 
      finally
        ReleaseMutex(myMutex); 
      end; 
    except
      ...
    end;