C#並發編程經典實例--筆記


一、簡介
 
--並發
        同時做多件事情
--多線程
        並發的一種形式,它采用多個線程來執行程序。
            **如非必要,代碼里不要出現 “new Thread()”。
 
--並行編程
        把正在執行的大量任務分割成小塊,分配給多個同時運行的線程。
--異步編程
        並發的一種形式,它采用future模式(Future就是你可以拿到未來的“結果”)或回調(callback)機制,以避免手動處理難以維護的線程。
        **現在推薦使用的 future類型有 Task 和 Task<TResult>,老式異步編程中采用回調或事件
--響應式編程
        一種聲明式的變成模式,程序在該模式中對事件做出響應。
 
-------------------------------------------------------------------------------------------------------------------------------------------
 
二、異步編程
 
異步編程的兩大好處:1,對於 GUI程序;
                                      2,對於服務器端應用。
 
現代異步.NET 程序使用兩個關鍵字:async和await
 
 
三、並行編程
 
並行的形式有兩種:數據並行和任務並行。
     Parallel 類型或者 PLINQ
 
 
四、響應式編程
 
Reactive Extensions(Rx)把事件看作是依次到達的數據序列。因此,將 Rx 認作是 LINQ to events(基於 IObservable<T> )也是可以的
 
 
 
Throttle 常用於類似“文本框自動填充”這樣的場合,用戶在文本框中輸入文字,當他停
止輸入時,才需要進行真正的檢索。
 
Sample 建立了一個有規律的超時時間段,每個時間段結束時,它就發布該時間段內最后的一條數據。如果這個時間段沒有數據,就不發布。
 
對於快速涌來的輸入,限流和抽樣是很重要的兩種工具。別忘了還有一個過濾輸入的簡單方法,就是采用標准 LINQ 的 Where 操作符。可以這樣說, Throttle 和 Sample 操作符與Where 基本差不多,唯一的區別是 Throttle 、 Sample 根據時間段過濾,而 Where 根據事件的數據過濾。在抑制快速涌來的輸入流時,這三種操作符提供了三種不同的方法。
 
 
 
 
在編寫 ASP.NET 程序時可考慮使用 HttpContext.Current.Items ,它的功能和 CallContext一樣,但效率更高。
 
Task.Run 完全可以替代 BackgroundWorker 、 Delegate.BeginInvoke 和 ThreadPool.QueueUserWorkItem


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM