電腦的處理器CPU處理時間程序時屬於並行處理,也就是同時運行處理的,而咱們常常說的併發,其實只是看起來並行,可是仍是相似於輪詢的。數據庫
如今好的處理器會有虛擬處理器,一個內核會有一個實際的處理器,也會產生一個虛擬的處理器,至關於四核八線程。緩存
CPU會緩存未完成的線程,L1,L2,L3級緩存,若是不夠用,則會存在內存裏。多線程
一個.NET程序運行則會造成本身的程序域,在本身的程序域中會加載本身的DLL,若是想刪除某個DLL,則須要刪除應用程序域。CPU執行程序域時會在自身生成一個線程去執行併發
線程建立時默認爲前臺線程,(控制檯黑窗口)若爲前臺線程頁面會等待線程結束纔會結束頁面(黑窗口)。若爲後臺線程,頁面則會在執行結束主線程後自動關閉(黑窗口),而此時子線程會在後臺繼續執行。異步
每次建立線程消耗過大,建議使用線程池完成多線程操做,建立線程池時池中已有閒置線程,線程池中線程爲後臺線程。性能
異步有三種方式網站
異步委託 (APM),事件異步(EAP),任務異步(TAP)線程
異步委託 APM3d
第一次試驗blog
第二次總結
假如遇到一個費時的操做,先發出請求,接下來便去作其餘操做,等到操做作完,查看開始的操做是否完成。
例如:
事件異步 EAP
下載一個網頁,成功後再執行其餘操做(阻塞)
微軟方法中後綴爲Async的方法爲異步操做
任務異步 TAP
等待單任務完成
等待多任務完成
任務等待
task泛型操做
本身建立線程放入任務
線程池中線程執行任務
Awit & Async
異步的任務只能由異步的方法來調用
若是調用 Test 則會先執行「fafafafafaf」,而後纔會打印網頁
PLINQ(處理器並行處理) 比 LINQ (單核處理) 性能要好
PLINQ
LINQ
IIS的異步
IIS工做線程有限, 不可以佔用過多
EF 的異步
創建數據庫表屬性
普通方法下EF異步
異步控制器下的EF
使用異步,可使網站運行不阻塞,用戶體驗更好。