Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Delphi 检测过时的互斥体_Delphi_Multithreading_Debugging_Delphi 2010 - Fatal编程技术网

Delphi 检测过时的互斥体

Delphi 检测过时的互斥体,delphi,multithreading,debugging,delphi-2010,Delphi,Multithreading,Debugging,Delphi 2010,是否有任何技术或工具可用于在运行时检测此类死锁 在一个辅助线程(几个线程中的一个,通常为4-6个)中想象这一点 或者更一般地说,是否有一种设计模式可以避免此类错误 我在一次较长的黑客攻击后的几小时内编写了上述代码一种更好的编码方式是使用try/finally而不是try/除了互斥释放(或任何其他类型的资源释放),即: 更好的编码风格是使用try/finally而不是try/除了互斥释放(或者任何其他类型的资源释放),即: @allenporter:只有在发生异常时才会释放互斥体,因此正常执行会导

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

在一个辅助线程(几个线程中的一个,通常为4-6个)中想象这一点

或者更一般地说,是否有一种设计模式可以避免此类错误


我在一次较长的黑客攻击后的几小时内编写了上述代码

一种更好的编码方式是使用try/finally而不是try/除了互斥释放(或任何其他类型的资源释放),即:


更好的编码风格是使用try/finally而不是try/除了互斥释放(或者任何其他类型的资源释放),即:


@allenporter:只有在发生异常时才会释放互斥体,因此正常执行会导致互斥体不被释放released@allenporter:互斥仅在发生异常时释放,因此正常执行会导致互斥不释放
try
   WaitForSingleObject(myMutex);
   DoSTuffThatMightCauseAnException;
except
   ReleaseMutex(myMutex);
end;
try
  WaitForSingleObject(myMutex); 
  try 
    DoSTuffThatMightCauseAnException; 
  finally
    ReleaseMutex(myMutex); 
  end; 
except
  ...
end;