1. 程式人生 > >併發 並行 同步 非同步 多執行緒的區別

併發 並行 同步 非同步 多執行緒的區別

1. 併發:在作業系統中,是指一個時間段中有幾個程式都處於已啟動執行到執行完畢之間,且這幾個程式都是在同一個處理機上執行。其中兩種併發關係分別是同步和互斥 2. 互斥:程序間相互排斥的使用臨界資源的現象,就叫互斥。 3. 同步:程序之間的關係不是相互排斥臨界資源的關係,而是相互依賴的關係。進一步的說明:就是前一個程序的輸出作為後一個程序的輸入,當第一個程序沒有輸出時第二個程序必須等待。具有同步關係的一組併發程序相互發送的資訊稱為訊息或事件。 其中併發又有偽併發和真併發,偽併發是指單核處理器的併發,真併發是指多核處理器的併發。 4. 並行:在單處理器中多道程式設計系統中,程序被交替執行,表現出一種併發的外部特種;在多處理器系統中,程序不僅可以交替執行,而且可以重疊執行。在多處理器上的程式才可實現並行處理。從而可知,並行是針對多處理器而言的。並行是同時發生的多個併發事件,具有併發的含義,但併發不一定並行,也亦是說併發事件之間不一定要同一時刻發生。

5. 多執行緒:多執行緒是程式設計的邏輯層概念,它是程序中併發執行的一段程式碼。多執行緒可以實現執行緒間的切換執行。

6. 非同步:非同步和同步是相對的,同步就是順序執行,執行完一個再執行下一個,需要等待、協調執行。非同步就是彼此獨立,在等待某事件的過程中繼續做自己的事,不需要等待這一事件完成後再工作。執行緒就是實現非同步的一個方式。非同步是讓呼叫方法的主執行緒不需要同步等待另一執行緒的完成,從而可以讓主執行緒幹其它的事情。    非同步和多執行緒並不是一個同等關係,非同步是最終目的,多執行緒只是我們實現非同步的一種手段。非同步是當一個呼叫請求傳送給被呼叫者,而呼叫者不用等待其結果的返回而可以做其它的事情。實現非同步可以採用多執行緒技術或則交給另外的程序來處理。

--------------------- 本文來自 cqkxboy168 的CSDN 部落格 ,全文地址請點選:https://blog.csdn.net/cqkxboy168/article/details/9026205?utm_source=copy