[待完成].Net异步编程的前世今生APM/EAP/TPL/async-await

异步编程模型(APM)

早在.NET Framework 1.0中,就有异步编程模型模式,又称APM模式、Begin/End模式、IAsyncResult模式。

基于事件的异步模型(EAP)

.net Framework 2.0引入了一些api,实现了处理异步操作的不同模式,这种模式主要用于在客户端应用程序上下文中处理异步操作。这种基于事件的异步模式或 EAP, EAP和SynchronizationContext是同时引入的,当异步操作被启动时,EAP规定完成事件应该排队到当前任何SynchronizationContext中。

关键的基础设施:

  • 事件
  • AsyncOperation类
  • AsyncOperationManager类

基于任务的异步编程模型(TAP)

  • .net Framework 4.0引入了System.Threading.Tasks.Task类型。
  • TAP是基于TPL的

TAP 中的异步方法在返回可等待类型(如 TaskTask<TResult>ValueTaskValueTask<TResult>)的方法的操作名称后面添加 Async 后缀。

任务并行库(TPL)

任务并行库 (TPL) 是 System.Threading 和 System.Threading.Tasks 空间中的一组公共类型和 API。 TPL 的目的是通过简化将并行和并发添加到应用程序的过程来提高开发人员的工作效率。 此外,TPL 还处理工作分区、ThreadPool 上的线程调度、取消支持、状态管理以及其他低级别的细节操作。 通过使用 TPL,你可以在将精力集中于程序要完成的工作,同时最大程度地提高代码的性能。

async 和 await 关键字

async await是C#5.0,也就是.NET Framewk 4.5时期推出的C#语法,通过与.NET Framewk 4.0时引入的任务并行库,也就是所谓的TPL(Task Parallel Library)构成了新的异步编程模型,也就是TAP(Task-based asynchronous pattern),基于任务的异步模式

扩展阅读

微软官方文档-异步编程模式
异步编程:IAsyncResult异步编程模型 (APM)
异步编程:基于事件的异步编程模式(EAP)
异步编程:.NET 4.5 基于任务的异步编程模型(TAP)
面试必备:C#多线程技术

此处评论已关闭