async和await异步编程

async和await异步编程
经过使用异步编程,你能够避免性能瓶颈并加强应用程序的整体响应能力。 可是,编写异步应用程序的传统技术可能比较复杂,使它们难以编写、调试和维护。
使用 async/await 功能能够更轻松直观地编写异步程序。 你能够编写相似于同步代码的异步代码,并让编译器处理异步代码一般须要的疑难回调函数和延续。
因为全部与用户界面相关的活动一般共享一个线程,所以,异步对访问 UI 线程的应用程序来讲尤其重要。
将“Async”追加到包含 async 修饰符的方法的名称后,方法内一般包含至少一个await表达式,该表达式标记一个点,在该点上,直到等待的异步操做完成方法才能继续。 同时,将方法挂起,而且控制返回到方法的调用方。
Task或Task。
异步方法旨在成为非阻止操做。 异步方法中的await表达式在等待的任务正在运行时不会阻止当前线程。 相反,表达式在继续时注册方法的其他部分并将控制返回到异步方法的调用方。async和await关键字不会建立其余线程(能够理解为工做的异步抽象,而非在线程之上的抽象);任务运行时,使用await在任务完成前将控制让步于其调用方,可以让应用程序和服务执行有用工做。 任务完成后代码无需依靠回调或事件即可继续执行。
等待I/O请求返回的同时,可经过生成处理更多请求的线程,处理更多的服务器请求;等待I/O请求的同时生成 UI 交互线程,并经过将长时间运行的工做转换到其余 CPU 核心,让 UI 的响应速度更快。
此模型可很好地处理典型的服务器方案工做负荷。 因为没有专用于阻止未完成任务的线程,服务器线程池可服务更多的 Web 请求。
对客户端应用带来的最大好处在于提升了响应能力。

转载于:https://www.cnblogs.com/nubi/p/async-await.htmlhtml