写点什么

介绍任务并行库中新增的取消框架

  • 2009-11-15
  • 本文字数:866 字

    阅读完需:约 3 分钟

.NET 4 的任务并行类库在 beta 2 中有了新面貌。这个类库与传统的 ThreadPool 相比提供了更好的性能和功能。其中一个改进便是解决了 ThreadPool 在任务取消方面的不足。众所周知,目前的线程池并不提供一种有效地方式来取消那些已经创建的任务。

任务并行库从一开始便提供了对任务取消的支持,不过 beta 2 版本中从实现和 API 上都引入了重要的改变。新的取消模型引入了 CancellationTokenSource,其中包含一个 CancellationToken 对象。这样一来 Task 对象便不需要 Cancel、AcknowledgeCancellation、IsCancellationRequested、Current、Parent 以及 TaskCreationOptions.RespectParentCancellation 枚举器等成员。与此相对,许多方法已经提供了一个可选的,包含 CancellationToken 作为参数的重载版本。

希望取消一个或多个任务的对象需要持有一个 CancellationTokenSource 对象,而一个响应取消操作的任务也需要持有 CancellationToken,并且有规律地检查它的 IsCancellationRequested 属性。多个任务可以共用同一个 CancellationToken。在得到任务取消的请求之后,每个任务需要抛出 OperationCanceledException。

在过去的 beta 版本中,任务之间自然维护着父 / 子关系。这个关系和它们产生的行为是自然建立的,除非开发人员显式地进行剥离。在 beta 2 中使用相反的做法。父 / 子关系在默认情况下并不会出现,除非开发人员显式地进行确认。

如果你确认了父 / 子任务,那么你同样获得原有的一些特性,如异常传播,父任务等待子任务完成。如果你不这么做,任务就和传统的 ThreadPool 工作项差不多了。

就像大部分没有处理的异常那样,没有得到“关注”的 TPL 异常会让应用程序崩溃。如果要对异常进行“关注”,你必须在调用任务的 Wait 方法时捕获异常,或者在任务被垃圾回收之前检查其 Exception 属性。Beta 2 增加了一个新的选项,即 UnobservedTaskException 事件,这给了开发人员最后得机会来避免异常造成实际的破坏。

你可以在.NET 并行计算博客中了解更多Beta 2 中的改进。

查看英文原文: Introducing the Task Parallel Library’s new Cancellation Framework

2009-11-15 10:481444
用户头像

发布了 157 篇内容, 共 57.5 次阅读, 收获喜欢 6 次。

关注

评论

发布
暂无评论
发现更多内容

2025上海国际机器人展(Tech G)

AIOTE智博会

消费电子展 消费电子展会 消费电子博览会 消费电子展览会

怎么把域名解析到IP地址?流程有哪些?一文讲清域名解析那些事

国科云

AI与数据分析|使用机器学习,轻松解决复杂的情感分析问题

Altair RapidMiner

机器学习 AI 数据分析 情感分析 altair

币安独霸,okx,bitget共享天下交易所新格局

区块链项目一站式包装孵化

ChatGPT在功能测试用例生成方面的优势

不在线第一只蜗牛

ChatGPT

Java面试突击手册,一周刷完这300道面试题,你也可以当架构师!

Summer

Java 程序员 面试 架构师 大厂

CCF-CV企业交流会—走进合合信息顺利举办,打造大模型时代的可信AI

合合技术团队

人工智能 信息安全 图像安全

DevOps研发效能建设的六大“雷区”:你中招了吗?

嘉为蓝鲸

DevOps 研发度量 效能度量 研发效能管理

GitHub下载破千万!这份Java大厂面试指南,竟是阿里面试官上传的

Summer

Java 程序员 面试 架构师 大厂

AI Agent:未来高效螺丝钉,谁用得好,谁先赚到钱

博文视点Broadview

想提高查询性能,用GaussDB(DWS) in表达式还是or表达式?

华为云开发者联盟

数据库 GaussDB 表达式 大数据‘’ #SQL

如何做区块链破局的模式:区块链如何破局

区块链软件开发推广运营

交易所开发 dapp开发 链游开发 公链开发 交易所开发代币开发

拼多多根据ID取商品详情原数据API接口的开发应用与收益

科普小能手

电商 API 接口 API 测试 pinduoduo API 拼多多数据

RWA代币:下一波财富增长的密码?

TechubNews

精选的掘金文章汇总[2024.11月-12月]

安全乐谷

GitHub 架构 算法 前端 后端

新金景集团:二十载专注做好女性私密

新消费日报

BOE(京东方)北京京东方医院主体结构开工 打造医工融合创新典范

爱极客侠

TON游戏现状一览:区块链与Telegram的完美融合

区块链软件开发推广运营

交易所开发 dapp开发 链游开发 公链开发 代币开发

介绍任务并行库中新增的取消框架_.NET_Jonathan Allen_InfoQ精选文章