2023-04-17
C#
00
请注意,本文编写于 320 天前,最后修改于 320 天前,其中某些信息可能已经过时。

目录

引言

引言

TaskValueTask都是用于异步编程的类型。它们都表示一项异步操作的结果,并可以在操作完成后检索该结果。

Task是.NET Framework中异步编程模型(APM)的核心类型之一。它是一个通用类型,可表示任何类型的异步操作。通过使用Task,您可以开始执行异步操作并返回一个表示该操作的任务,然后可以等待该任务以获取操作结果。Task还提供了各种方法来管理任务的执行,例如等待多个任务完成、取消任务等等。

ValueTask与Task不同,ValueTask是一个值类型,而不是一个引用类型。在创建和处理ValueTask时,不需要分配额外的堆内存。如果异步操作非常快速并且几乎总是同步完成,则ValueTask可能比Task更有效率。但是,对于较长时间运行的异步操作,使用ValueTask可能会导致性能下降,因为它可能需要分配堆内存来存储大量的状态信息。

参考资料

[1] https://devblogs.microsoft.com/dotnet/understanding-the-whys-whats-and-whens-of-valuetask/

[2] https://rubikscode.net/2018/06/11/asynchronous-programming-in-net-benefits-and-tradeoffs-of-using-valuetask/

[3] https://blog.scooletz.com/2018/05/14/task-async-await-valuetask-ivaluetasksource-and-how-to-keep-your-sanity-in-modern-net-world/

本文作者:Peter.Pan

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!