TDiocpCoderTcpServer异步任务投递队列
TDiocpCoderTcpServer异步任务投递队列
服务端收完客户端一个完整的请求数据,会将它投递到异步任务队列中。服务端的工作线程池从异步任务队列中取一个任务,进行处理。
uses utils_queues;
FTaskObjectPool := TBaseQueue.Create();
FTaskObjectPool.FreeDataObject;
FTaskObjectPool.Free;
function TDiocpCoderTcpServer.GetTaskObject: TDiocpTaskObject; begin Result := TDiocpTaskObject(FTaskObjectPool.DeQueue); if Result = nil then begin Result := TDiocpTaskObject.Create; end; Result.FContextDNA := 0; Result.FData := nil; Result.FOwner := Self; end; procedure TDiocpCoderTcpServer.GiveBackTaskObject(pvObj: TDiocpTaskObject); begin pvObj.FContextDNA := 0; pvObj.FData := nil; pvObj.FOwner := nil; FTaskObjectPool.EnQueue(pvObj); end;
本文来自博客园,作者:{咏南中间件},转载请注明原文链接:https://www.cnblogs.com/hnxxcxg/p/13521350.html