一、簡介
--並發
同時做多件事情
--多線程
並發的一種形式,它采用多個線程來執行程序。
**如非必要,代碼里不要出現 “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