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