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

浙公网安备 33010602011771号