smart coder=smart code ++

高并发,高性能,分布式系统和服务器端设计
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

随笔分类 -  任务编程

摘要:任务调度器 任务调度器是将任务和线程联系起来的一个关键纽带。任务调度器的主要职责就是负责将任务指派给相应的工作线程处理。任务并行框架中有一个抽象类TaskScheduler来完成任务调度的工作。如果我们想自定义的任务调度器我们只需要继承该类,并实现一些接口。任务调度器有两个关键接口函数QueueTask和TryExecuteTask ,QueueTask函数主要让任务并行框架将任务项传递给任务调... 阅读全文

posted @ 2010-07-07 16:54 smart coder 阅读(1749) 评论(1) 推荐(0) 编辑

摘要:创建子任务 任务创建的子任务主要有两种类型,关联子任务(attached task)和非关联子任务(detached task)。关联子任务和父任务是被包含的关系,父任务必须等到所有关联子任务完成才完成。非关联子任务是由父任务发起的,但父任务不需等待该子任务完成。以下是一个示例代码:运行结果如下:运行结果如下:通过上述结果显示,parenttask任务等待attachedtask任务完成才结束。而... 阅读全文

posted @ 2010-07-05 09:13 smart coder 阅读(1025) 评论(0) 推荐(0) 编辑

摘要:任务调度问题是多任务编程中的一个常见问题。任务并行框架提供了一系列任务调度的机制。任务调度过程中主要解决连续任务调度和父子任务调度。所谓连续任务调度即一个任务直到另一个任务执行完成才开始执行,在这一过程中需要状态的转移,后续任务需要获取上一任务的执行结果。父子任务调度即一个任务执行上下文内有一组任务(子任务)执行。任务并行框架对于连续任务调度问题有很好的解决。下面我们看看任务并行框架对于连续任务调... 阅读全文

posted @ 2010-06-29 21:51 smart coder 阅读(1706) 评论(1) 推荐(0) 编辑

摘要:多任务运行过程如果出现异常情况,我们如何获知这是一个比较困难的问题。我们只能在每个任务内部异常捕获和处理,但系统级别的异常我们想捕获就困难了。任务编程框架提供了一种聚合异常的方式,集中管理一系列任务的异常情况。我们可以在任务执行的外部捕获到任务的异常。框架中提供了AggregateException这个类来获取任务的异常信息。示例代码:运行结果:另一种处理方式是迭代处理,对一系列的任务执行统一的处... 阅读全文

posted @ 2010-06-29 09:07 smart coder 阅读(636) 评论(0) 推荐(0) 编辑

摘要:有时我们需要等待任务的完成,有可能等待单个任务,等待多个任务中任意一个完成,或者等待多个任务都完成。 等待单个任务示例代码:运行结果:运行结果:可以看得出来消耗的时间和任务执行的时间差不多。等待任意一个任务示例代码:运行结果:可以看出消耗时间和运行时间最短的那个任务执行时间差不多。等待所有任务示例代码:运行结果:可以看出消耗时间和运行最长的那个任务时间差不多。等待任务执行就介绍到这里,下一篇将介绍... 阅读全文

posted @ 2010-06-28 21:50 smart coder 阅读(2050) 评论(0) 推荐(2) 编辑

摘要:在多线程编程中取消操作是一个很普遍的处理操作,最简单的做法是通过设置一个标识位来判断是否取消。.net 任务并行框架提供了一套有效机制来实现任务的取消,以降低取消操作的风险。 在.net 任务并行框架中通过CancellationTokenSource和CancellationToken这两个类来执行任务取消操作以及获取取消状态。CancellationToken是作为一个标记存放于任务中,Can... 阅读全文

posted @ 2010-06-28 19:51 smart coder 阅读(807) 评论(0) 推荐(1) 编辑

摘要:任务编程是.net 4.0提供应对平行程序开发的一套框架,该框架的相关类在System.Thread.Task命名空间下.我们将通过一系列文章来介绍该框架的功能和应用开发。1.创建任务创建任务有两种方法:第一种是新建一个task对象,然后调用Start方法执行任务。第二种方法是通过工厂方法直接执行任务项。示例代码:运行结果:创建任务的时候有四种选项,通过设置TaskCreationOption的值... 阅读全文

posted @ 2010-06-27 19:19 smart coder 阅读(1140) 评论(0) 推荐(2) 编辑