剖析C#中的异步方法

翻译自一篇博文,原文:Dissecting the async methods in C#

异步系列

  • 剖析C#中的异步方法

  • 扩展C#中的异步方法
  • C#中异步方法的性能特点
  • 用一个用户场景来掌握它们

C#这门语言对开发者的生产效率有很大帮助,我很高兴最近的推动让它变得对高性能应用更加合适。

举例来说:C# 5引入了“async”方法(async表示异步,也是关键字)。这个特性从用户的角度看是很实用的,因为它能将几个基于Task的操作合并为一个。但是这种抽象是需要代价的。Task是引用类型,每次实例化的时候都会造成堆上的内存分配,就算是“async”方法同步地执行完毕的情况下也不例外。有了C# 7,在某些场景下,异步方法可以返回类似Task的类型,比如ValueTask,来减少或避免在堆上的内存分配。

为了理解如何将上述一切变为可能,我们需要看看异步方法在底层是如何实现的。

但首先,先来回顾一点历史。

你可能感兴趣的:(unity精华)