1. 引言

最近在學(xué)習(xí)Abp框架,發(fā)現(xiàn)Abp框架的很多Api都提供了同步異步兩種寫法。異步編程說起來,大家可能都會說異步編程性能好。但好在哪里,引入了什么問題,以及如何使用,想必也未必能答的上來。
自己對異步編程也不是很了解,今天就以學(xué)習(xí)的目的,來梳理下同步異步編程的基礎(chǔ)知識,然后再來介紹下如何使用async/await進(jìn)行異步編程。下圖是一張大綱,具體可查看腦圖分享鏈接。

2. 同步異步編程

同步編程是對于單線程來說的,就像我們編寫的控制臺程序,以main方法為入口,順序執(zhí)行我們編寫的代碼。
異步編程是對于多線程來說的,通過創(chuàng)建不同線程來實現(xiàn)多個任務(wù)的并行執(zhí)行。

3. 線程

.Net 1.0就發(fā)布了System.Threading,其中提供了許多類型(比如Thread、ThreadStart等)可以顯示的創(chuàng)建線程。
說到Thread,我們需要了解以下幾個概念:

3.1. 什么是主線程

每一個Windows進(jìn)程都恰好包含一個用作程序入口點的主線程。進(jìn)程的入口點創(chuàng)建的第一個線程被稱為主線程。.Net執(zhí)行程序(控制臺、Windows Form、Wpf等)使用Main()方法作為程序入口點。當(dāng)調(diào)用該方法時,主線程被創(chuàng)建。

3.2. 什么是工作者線程

由主線程創(chuàng)建的線程,可以稱為工作者線程,用來去執(zhí)行某項具體的任務(wù)。