写点什么

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

  • 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:481549
用户头像

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

关注

评论

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

云端大模型有哪些创新使用场景?一个原型方案

魏临

设计师为什么要选择云电脑?

青椒云云电脑

云电脑

第三方数据测评对比五大品牌HTTP代理!哪家代理最纯净稳定

Geek_ccdd7f

跨境电商

Kurator v0.5.0发布,打造统一的多集群备份与存储体验

华为云开发者联盟

云原生 开发工具 华为云 华为云开发者联盟

YashanDB发布会圆满收官,V23.1三大新品引领国产数据库技术与应用突破!

墨天轮

数据库 实时数仓 国产数据库 空间数据库 yashandb

什么是云电脑?云电脑为何被企业青睐?

青椒云云电脑

云桌面 云电脑

为什么明道云不提供原厂实施服务

明道云

大咖专场 | KaiwuDB 多模数据库 - 时序性能优化方案

KaiwuDB

KaiwuDB 大咖专场 数据库性能优化

Android发热监控实践

得物技术

性能优化 发热功耗 App体验 端侧监控

适合小团队协作的app推荐,这8款协同提效工具一定要知道!

彭宏豪95

效率工具 团队协作 在线白板 办公软件 团队协作工具

现在哪个云电脑更好用

青椒云云电脑

云电脑

inBuilder低代码平台新特性推荐-第六期

inBuilder低代码平台

低代码平台

浪潮海岳inBuilder低代码开发认知实践营正式开营

inBuilder低代码平台

低代码平台

苹果windows都想要?上大学该怎么选笔记本电脑?

青椒云云电脑

云电脑

罗拉ROLA-IP代理IP:稳定性、纯净性、响应速度的保证

Geek_ccdd7f

第三方数据测评对比五大品牌HTTP代理!哪家代理最纯净稳定

Geek_ccdd7f

罗拉ROLA-IP代理IP:稳定性、纯净性、响应速度的保证

Geek_ccdd7f

跨境电商

2023英特尔全栈解决方案服务商高层论坛成功举行

E科讯

什么是云电脑?云电脑怎么实现安全的远程办公环境?

青椒云云电脑

云电脑

图形工作站out?云电脑成设计师新宠

青椒云云电脑

云电脑

人工智能:何谓技术

不在线第一只蜗牛

人工智能 AI 人工智能技术

Databend Cloud 如何助力 AIGC 初创公司成本下降百倍

Databend

十月份 NFT 市场显示复苏迹象,等待进一步的积极发展

Footprint Analytics

区块链游戏 NFT

青椒云桌面云一体机的优势在哪里?

青椒云云电脑

桌面云一体机

亚马逊云 Lightsail:初创公司的福音

天黑黑

云服务器 亚马逊云 VPS

基于亚马逊云服务器+Grafana Loki日志采集方案部署

wangkx

Grafana Loki 亚马逊云 亚马逊云科技 AWS EC2

云电脑与5G网络的结合将会带来什么

青椒云云电脑

云电脑

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