unit uIdHTTPServer;
interface
uses
IdSchedulerOfThreadPool, IdSchedulerOfThread, IdTCPConnection, IdHTTPServer, IdScheduler,
System.Classes;
type
TIdHTTPServer = class(IdHTTPServer.TIdHTTPServer)
protected
procedure StartupPooled;
end;
implementation
uses
uCodeRedirect;
var
P: TCodeRedirect;
{ TIdHTTPServer }
procedure TIdHTTPServer.StartupPooled;
var
LScheduler: TIdScheduler;
begin
LScheduler := Scheduler;
if not Assigned(LScheduler) then
begin
LScheduler := TIdSchedulerOfThreadPool.Create(Self);
with TIdSchedulerOfThreadPool(LScheduler) do
begin
MaxThreads := 100;
PoolSize := 30;
end;
Scheduler := LScheduler;
end;
P.Disable;
Startup; //call old Startup
P.Enable;
end;
initialization
P := TCodeRedirect.Create(@TIdHTTPServer.Startup, @TIdHTTPServer.StartupPooled);
finalization
P.Free;
end.
只要包含了这个unit就行了。
2014年5月27日星期二
给DSHTTPService追加线程缓存池2
前面写的给DSHTTPService太凌乱,后来觉得不如直接hack TIdHTTPServer类更简单,在StartUp前设置上Schedule,测试后发现可以走通,代码就清爽了很多了。
订阅:
博文评论 (Atom)
没有评论:
发表评论