为何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;
所以它认为线程一直没有结束。

有别的人发现这个问题吗?
...全文
181 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
火星牛 2010-11-03
  • 打赏
  • 举报
回复
delphi xe很偷懒,只是改了一下兼容性,仍然支持的是Apache 2.0,不是2.2
火星牛 2010-11-03
  • 打赏
  • 举报
回复
在IIS中,或直接直接在window form中不会出现这种情况。

5,388

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧