异步编程- async和await

Posted talentzemin

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了异步编程- async和await相关的知识,希望对你有一定的参考价值。

 

使用目的

避免阻塞主线程
提高程序响应能力

C#中使用

C# 中的 Async 和 Await 关键字是异步编程的核心。

技术分享

疑惑

The async and await keywords don‘t cause additional threads to be created. Async methods don‘t require multithreading because an async method doesn‘t run on its own thread. The method runs on the current synchronization context and uses time on the thread only when the method is active.

答疑

I explain it in full in my blog post There Is No Thread.
In summary, modern I/O systems make heavy use of DMA (Direct Memory Access). There are special, dedicated processors on network cards, video cards, HDD controllers, serial/parallel ports, etc. These processors have direct access to the memory bus, and handle reading/writing completely independently of the CPU. The CPU just needs to notify the device of the location in memory containing the data, and then can do its own thing until the device raises an interrupt notifying the CPU that the read/write is complete.
Once the operation is in flight, there is no work for the CPU to do, and thus no thread.

使用场景

程序中耗时I/O操作时适合使用。
I/O操作不仅包括了直接的文件、网络的读写,还包括数据库操作、Web Service、HttpRequest的调用。  

参考

https://docs.microsoft.com/zh-cn/dotnet/csharp/programming-guide/concepts/async/index

https://stackoverflow.com/questions/37419572/if-async-await-doesnt-create-any-additional-threads-then-how-does-it-make-appl

 

 





以上是关于异步编程- async和await的主要内容,如果未能解决你的问题,请参考以下文章

async和await异步编程资源汇总

.NET4.5 异步编程 async和await

异步编程之Async,Await和ConfigureAwait的关系

Async和Await异步编程的原理

C#:异步编程中的 async 和 await

异步编程初探async和await