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)
没有评论:
发表评论