剖析C#中的異步方法

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

異步系列


C#這門語言對開發者的生產效率有很大幫助,我很高興最近的推動讓它變得對高性能應用更加合適。

舉例來說:C# 5引入了“async”方法(async表示異步,也是關鍵字)。這個特性從用戶的角度看是很實用的,因爲它能將幾個基於Task的操作合併爲一個。但是這種抽象是需要代價的。Task是引用類型,每次實例化的時候都會造成堆上的內存分配,就算是“async”方法同步地執行完畢的情況下也不例外。有了C# 7,在某些場景下,異步方法可以返回類似Task的類型,比如ValueTask,來減少或避免在堆上的內存分配。

爲了理解如何將上述一切變爲可能,我們需要看看異步方法在底層是如何實現的。

但首先,先來回顧一點歷史。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章