检测陈旧的互斥锁

时间:2010-06-15 06:10:59

标签: delphi multithreading debugging delphi-2010

是否有任何技术或工具可用于在运行时检测此类死锁?

在工作线程(几个中的一个,通常是4-6个)中描绘这个

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

或更普遍的是有一种设计模式来避免这些错误吗?

经过长时间的黑客攻击后,我在上面的代码中编写了上面的代码

1 个答案:

答案 0 :(得分:6)

更好的编码风格是使用try / finally而不是try / except for mutex release(或任何其他类型的资源释放,就此而言),即:

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