異步多線程編程模型

 

 

電腦的處理器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

 

 

 

 使用異步,可使網站運行不阻塞,用戶體驗更好。

相關文章
相關標籤/搜索