並行和併發、同步和非同步的區別

NO IMAGE

1、並行

      對多處理器而言–多個程式在同一時刻發生,具有併發的含義,但併發不一定並行,也亦是說併發事件之間不一定要同一時刻發生。

     並行:在單處理器中多道程式設計系統中,程序被交替執行,表現出一種併發的外部特種;在多處理器系統中,程序不僅可以交替執行,而且可以重疊執行。在多處理器上的程式才可實現並行處理。計算機作業系統中把並行性和併發性明顯區分開,主要是從微觀的角度來說的,具體是指程序的並行性(多處理機的情況下,多個程序同時執行)和併發性(單處理機的情況下,多個程序在同一時間間隔執行的)。

2、併發

    對單處理器而言–多個程式在同一時間段發生;

   (1) 併發中又有:互斥和同步:
    互斥:程序間相互排斥使用臨界資源;比如寫操作;
    同步:不是排斥關係而是依賴關係,前一個程序的輸出是後一個程序的輸入,當第一個程序沒有結束時第二個程序必須等待,相互協同完成一些事情;;具有同步關係的一組程序併發時傳送的訊息稱為訊息或者事件;
   (2)同步和非同步:
    非同步:就是執行緒B在等待A的結果的時候還可以繼續幹自己的事兒,之間通過訊息和事件來通知對方,提高了程式執行的效率。簡而言之,就是不是站在那兒傻傻死等;非同步和多執行緒並不是一回事,非同步是最終目的,多執行緒只是實現的一種方法。