From 6f4a9cc08c0cee3c057e2eb71c6caf3e3c95340c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=90=B4=E9=95=BF=E5=BE=81?= Date: Thu, 2 Jan 2020 15:50:35 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0Readme=E6=96=87=E4=BB=B6?= =?UTF-8?q?=E8=AF=B4=E6=98=8E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.MD | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/README.MD b/README.MD index 838b1e8..49d8af8 100644 --- a/README.MD +++ b/README.MD @@ -1 +1,17 @@ -多线程多优先级任务调度组件 \ No newline at end of file +多线程多优先级任务调度组件 + +1. 首先需要实现ITaskUnit接口。这个接口包含一个用来执行任务的Run方法和一个处理任务结果的TaskCallback方法。Run方法返回结果会作为result参数传递给TaskCallback方法。 +2. 第二步需要实例化一个任务调度器ConcurrentQueueTask,它实现了ITaskScheduler接口。 +3. 获得ITaskScheduler对象后可以调用相关的AddXXXXQueue方法将任务单元ITaskUnit加入队列。 +4. 调用ITaskScheduler的Start()方法开始执行任务调度,组件会根据加入的任务优先级按顺序执行Run方法,并在完成后调用依次调用TaskCallback。 +5. 调用的顺序一般不予加入的顺序相同,只跟加入的优先级队列有关。 + +下面介绍队列: +1. System队列:该队列具有最高优先级,一般用来执行系统同步任务。任务加入队列后将在下次调度发生后马上执行。 +2. First队列:该队列优先级低于System队列,一般用来执行需要优先执行的任务,System中没有任务后开始执行。 +3. Queue一般级队列组:该组包含若干队列,处于该组队列中的任务会在system和First队列中没有任务后执行。具体执行哪个任务取决于队列的命中率,该命中率有weight决定。该值越大命中率越高。 +4. Idel队列:空闲队列,当System、First和Queue队列均无任务可执行后开始执行。 + +注意点: +1. 只有执行Start方法后才开始调度任务,并且在所有任务完成后结束调度,如果结束调度后再次加入新的任务需要再次调用Start方法重新开始调度。 +2. 任务执行Run中抛出的异常会传入TaskCallback方法进行处理。TaskCallback中抛出的异常不会处理并且会结束整个任务调度。 \ No newline at end of file