为何Apache中创建的线程释放不了?
火星牛 2010-11-03 02:10:50 我之前的Aapche shared object可以运行的,最近突然启动不了,一直卡死。
反复跟踪后,发现时一个线程结束不了,waitfor一直在等。
先一个简单的测试程序:
用delphi7创建一个空的web service程序,选Aapche2,新建一个单元:
unit ApacheThreadTest;
interface
uses
Classes;
type
TMyThread=class(TTHread)
public
procedure Execute;override;
end;
implementation
{ TMyThread }
var
gMyThread:TMyThread;
procedure TMyThread.Execute;
begin
end;
initialization
gMyThread:=TMyThread.Create(true);
finalization
gMyThread.Free;
end.
然后在Apache启动,会发现在gMyThread.Free时卡住不动,跟踪是Waitfor里面一直出不来,看起来是Resum没有效果,
这条语句一直没有执行:
function ThreadProc(Thread: TThread): Integer;
所以它认为线程一直没有结束。
有别的人发现这个问题吗?