注: 內容來自《C#併發編程經典實例》,只是用來記錄學習。
併發:同時做多件事。
多線程:併發的一種形式,它採用多個線程來執行程序。
線程池要求多線程繼續存在。線程池存放在任務的隊列,這個隊列能夠根據需要自行調整。相應地線程池產生了另一個重要的形式:並行處理。
並行處理: 把正在執行的大量任務分割成小塊,分配給多個同時運行的線程。(現代多核CPU,不同的核運行不同的線程)。
異步編程:併發的一種形式,它採用future模式或回調(callback)機制,以避免產生不必要的線程。(核心理念異步操作)
一個future(或promise)類型代表一些即將完成的操作。在.net中,新版future類型有Task和Task<TResult>,在老式異步編程AIP中,採用回調或事件(event),而不是future。
VS2012支持async和await這讓異步編程變得幾乎和同步(非併發)編程一樣容易。併發編程的另一種形式是響應式編程(reactive programming)。異步編程針對操作。
響應式編程:一種聲明式的編程模式,程序在該模式中對事件作出響應。
與異步編程非常類似,不過他是基於異步事件(asynchonous event)的,而不是異步操作(asynchronous operation)。異步事件沒有一個實際的“開始”,可以在任何事件發生,並且可以發生多次,例如用戶輸入。響應式編程不一定是併發的,但它與併發編程聯繫緊密。(一個併發程序會使用多種技術。大多數程序至少使用了多線程(通過線程池)和異步編程)。