设为首页 加入收藏

TOP

.NET 4.6中新的任务并行库特性
2015-03-04 22:51:40 来源: 作者: 【 】 浏览:38
Tags:.NET 4.6 中新 任务 并行 特性

在即将发布的 .NET 4.6 中,.NET 中的任务并行库将会进行某些调整。其中会包括一些新的帮助方法以减少代码量,可能还会有性能方面的优化。除此之外,TPL 将会通过使用一个新的解决方案对 SetResult 方法中某个复杂的问题进行处理。


可以将 Task.FromResult 视为一个典型样板,这一函数用于创建一个已经完成的 Task 对象,而无需首先创建一个 TaskCompletionSource 对象。开发者无法模拟这一效果,因此这需要访问 Task 类型的内部实现,如果你希望在异常处理时达到同样的效果,以上缺陷就将会成为一个阻碍。


.NET 4.6 通过 Task.FromException 方法解决了这一问题。与 FromResult 类似,它能够绕过 TaskCompletionSource 这一机制的使用,并避免了随之而来的各种消耗。


与之相关的一个特性是 Task.CompletedTask 属性,该属性会返回一个完成的 Task 对象,而在目前的版本中只能通过 Task.FromResult(null)实现。严格来说,这一特性并非十分必要,但它确实能够让开发者的意图变得更加清 晰一些了。


与最后一个重要的特性相比,以上所介绍的这些新特性的效果可谓微不足道。TaskCompletionSource.SetResult 方法有一个已知的行为,即如果该方法的后续方法会挂起对应的 Task 对象的话,那么这些后续方法有可能会以同步方式进行运行。Stephen Toub 为读者解释了为什么这一行为可能会出现问题:


为了避免这一情况的产生,开发者可以在创建 TaskCompletionSource 时,使用 RunContinuationsAsynchronously 这一新的标记:


.NET 4.6 将会与 Visual Studio 2015 一起发布。


英文原文:New Task Parallel Library Features in .NET 4.6


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇Java的JDK已经可以无警告编译通过 下一篇Python中的字符串驻留

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: