线程池任务队列(四)

2014-11-24 10:13:24 · 作者: · 浏览: 4
ueCount: Integer;
function getIdleQueueCount: Integer;
//*****************************************************//

//***********************同步量处理********************//
procedure CreateLock;
procedure FreeLock;
//*****************************************************//

//设置初值
procedure SetDefault;
//处理回调
procedure DoTaskFull;

//********************线程队列操作**********************//
//清空线程队列
procedure ClearQueue(var Queue:TWorkThreadQueue);
//得到队列的长度
function QueueSize(Const Queue:TWorkThreadQueue):Integer;
//调整队列
procedure DelQueueOfIndex(var Queue:TWorkThreadQueue;Const Index:Integer);
//移动队列;
procedure MoveQueue(Const wt:TWorkThread;flag:Integer);
//移除某个线程
procedure RemoveFromQueue(var Queue:TWorkThreadQueue;Const re:TWorkThread);
//*****************************************************//

//********************任务队列操作**********************//
//排序队列将优先级高的排前面。//可以交给外问进行排序算法
procedure SortTask(var Queue:TWorkTaskQueue);
//调整队列
procedure DelTaskOfIndex(var Queue:TWorkTaskQueue;Const Index:Integer);
//获取队列大小
function TaskSzie(Const Queue:TWorkTaskQueue):Integer;
//*****************************************************//
//查找任务(如果有好的算法,哪更高效)
function FindTask(Const tsk:TWorkTask):Integer;
//快速排序
procedure QuikeSortTask(var Queue:TWorkTaskQueue;Const s,e:Integer);
//自动回收空闲线程
procedure RecoverIDle(Const wait:TWorkThread);
//交换任务
procedure switch(var Queue: TWorkTaskQueue; m, n: Integer);
//判断当前运行线程是否使用在等待自动回收
function WaitAutoRecover(Const curThread:TWorkThread):Boolean;
protected
//求最小值
function Smaller(Const expresion:Boolean;Const tureva lue,falseva lue:Integer):Integer;
//按照先进选出进行提取任务
function PickupTask:TWorkTask;
//创建空闲线程
procedure CreateIdleThread(Const Nums:Integer = 1);
//添加到空闲线程队列
procedure AddThreadToIdleQueue(Const idle:TWorkThread);
//添加到工作队列
procedure AddThreadToBusyQueue(Const busy:TWorkThread);
//发送新任务到达信号
procedure PostNewTaskSign;

public
Constructor Create;
Destructor Destroy;override;
//***********************线程池管理方法******************************//
//停止执行的任务
procedure StopAll;
//开始任务
procedure StartAll;
//清空任务
procedure CleanTasks;
//运行中不能进行对调
function SwitchTasks(Const aTask,bTask:TWorkTask):Boolean;
//移除某个任务
procedure RemoveTask(Const tk:TWorkTask);//只允许移除未执行的任务
//需要外部定时调用来得到动态数据效果
procedure ListenPool;
//******************************************************************//
//添加任务
function AddWorkTask(Const wtask:TWorkTask):Integer;

property MinNums:Integer read FMinNums write SetMinNums;
property MaxNums:Integer read FMaxNums write FMaxNums;
property TasksCacheSize:Integer read FTasksCache wr