uThreadPool 线程池 代码:http://www.delphifans.com/SoftView/SoftView_2722.html不知道怎么调用求demo代码

解决方案 »

  1.   

    只需要设置好线程池TThreadsPool对象的参数就行了。线程的调度都由线程池来完成。最重要的是要从TWorkItem派生一个子类,来实现线程池要完成的任务。TThreadsPool其它的属性注释得很清楚:
        // 线程处理任务时触发的事件
        property OnProcessRequest: TProcessRequest read FProcessRequest write
          FProcessRequest;
        // 任务列表为空时解发的事件
        property OnQueueEmpty: TQueueEmpty read FQueueEmpty write FQueueEmpty;
        // 线程结束时触发的事件
        property OnThreadFinalizing: TProcessorThreadFinalizing read
          FThreadFinalizing write FThreadFinalizing;
        // 线程初始化时触发的事件
        property OnThreadInitializing: TProcessorThreadInitializing read
          FThreadInitializing write FThreadInitializing;
        // 线程超时值(毫秒), 如果处理超时,将视为死线程
        property ThreadDeadTimeout: DWORD read FThreadDeadTimeout write
          FThreadDeadTimeout default 0;
        // 最大线程数
        property ThreadsMax: Integer read FThreadsMax write FThreadsMax default 1;
        // 最小线程数
        property ThreadsMin: Integer read FThreadsMin write FThreadsMin default 0;
      end;
      

  2.   

    对线程操作不太熟悉 能详细讲一下 如何派生TWorkItem子类吗// 使用线程池
    var
     AWorkItem: TRecvCommDataWorkItem; // 继承自TWorkItem
    begin
     AWorkItem := TRecvCommDataWorkItem.Create;
     Move(PData[0], AWorkItem.FRecvData[0], PDataLen);
     AWorkItem.FRecvDataLen := PDataLen;
     FThreadPool.AddRequest(AWorkItem); // 向线程池分配一个任务
    end;这个代码TRecvCommDataWorkItem 这个东西不知道如何得来