并行性和并發性是既相似又有差別的兩個概念,再開始分析之前,我們先給出并發和并行的概念。
并行是指兩個或多個事件在同一時刻發生。
并發是指兩個或多個事件在同一時間間隔内發生。
大家看到的圖一般如下所示:

上述是部落客看到的并發和并行的了解,其實我之前也一直是這麼認為的,一直到我寫了上一篇部落格,從作業系統的發展過程對程序和線程進行了分析,才覺得并發的概念似乎并不是這樣的,是以這篇部落格是一篇糾錯部落格,如果了解的有誤,還請大家一起進行讨論。首先指出我認為的錯誤,并發并不是指同一時刻隻能有一條指令執行,造成這個困擾的原因是在單核CPU的作業系統中,每一時刻僅能有一道程式執行,故微觀上這些程式隻能分時的交替執行,此時情況如下圖:
在上圖中,事件A、B、C、D、E、F、G在單核CPU的作業系統中依次的執行,這也是我們之前了解的并發。但是在多核CPU的作業系統中,這些并發的程式便可被配置設定到多個處理機上,實作真正意義上的并行(這裡可以參考我的另一篇博文),即利用每個處理機來處理一個可并發執行的程式,這樣多個程式便可以同時執行,圖示如下所示:
在上圖中,事件A、B,事件G、F在多核CPU作業系統中可以做到真正的并行執行。是以在多CPU的環境下,并發的程式有可能會轉為并行,但是需要多個程式可以同時能搶占到處理機(這部分是處理機排程問題,大家有興趣可以關注我的部落格,後續後講到)。