线程池Threadsize 只有ServerType为stThreadBlocking才有效
TServerClientThread.Create 的时候调用ReActivate
FServerSocket.AddThread(Self);
,在AddThread中
if FActiveThreads.IndexOf(AThread) < 0 then
begin
FActiveThreads.Add(AThread);
if FActiveThreads.Count <= FThreadCacheSize then
AThread.KeepInCache := True;
end;
把线程加入到了Sever中,修改这个线程是否释放标志。
在TServerClientThread.EndConnect中:
Result := Terminated or not KeepInCache;
如果线程不中段或不在缓冲中就调用DoTerminate
TServerClientThread.DoTerminate 中
TServerClientThread.DoTerminate
又从server中删除了线程
本文详细解析了线程池中的线程管理机制,包括线程的创建、激活及回收流程。重点介绍了如何通过ServerType配置来控制线程的行为,并探讨了线程缓存的作用及其在连接结束时如何进行清理。
4845

被折叠的 条评论
为什么被折叠?



