假設乙個有三個學生需要輔導作業,幫每個學生輔導完作業是乙個任務
順序執行:老師甲先幫學生a輔導,輔導完之後再取給b輔導,最後再去給c輔導,效率低下 ,很久才完成三個任務
併發:老師甲先給學生a去講思路,a聽懂了自己書寫過程並且檢查,而甲老師在這期間直接去給b講思路,講完思路再去給c講思路,讓b自己整理步驟。這樣老師就沒有空著,一直在做事情,很快就完成了三個任務。與順序執行不同的是,順序執行,老師講完思路之後學生在寫步驟,這在這期間,老師是完全空著的,沒做事的,所以效率低下。
並行:直接讓三個老師甲、乙、丙三個老師「同時」給三個學生輔導作業,也完成的很快。
總結:併發就是指**邏輯上可以並行,有並行的潛力,但是不一定當前是真的以物理並行的方式執行。併發指的是**的性質,並行指的是物理執行狀態。
顧名思義,併發強調的是一起出發,並行強調的是一起執行。併發的反義是順序,並行的反義是序列。併發並行並不是互斥概念,只不過併發強調任務的抽象排程,並行強調任務的實際執行。
早期的作業系統並沒有執行緒的概念,只有程序,程序負責作業系統對應用程式資源的分配以及程式任務的排程執行,
但隨著電腦科學的發展,為了提高作業系統的資源利用率,人們提出了執行緒的概念,用執行緒來控制應用程式任務的排程
執行,程序負責作業系統對應用程式資源的分配。也就是說程序是作業系統對資源分配的最小單位,執行緒是任務排程執行的最小
單位,程序由乙個或多個執行緒組成。
執行緒的概念實際上可以分為兩種,使用者執行緒和核心執行緒,使用者執行緒指的就是我們應用程式中的執行緒,核心執行緒指作業系統處理器所
具有的一種執行緒。使用者執行緒被排程的時候,會被對映到核心執行緒上,核心執行緒進行排程執行。
並行與併發的區別
程序與執行緒 併發與並行
程序占有的資源 執行緒占有的資源 位址空間 棧全域性變數 暫存器開啟的檔案 狀態等 程式計數器 簡單的理解執行緒安全的問題 多執行緒程式在執行時候,可能會同時對乙個變數進行操作,操作的時候,一般執行緒會將這個變數的值copy到 自身執行緒的巨變變數中,再進行操作,此時可能就會發生 讀寫時資料不同步 ...
執行緒並行與併發的區別
併發 在同一時間間隔內,同時有多個程序或執行緒執行。並行 在同一時刻,同時有多個程序或執行緒執行。舉個簡單明瞭的例子 如果一台主機只有乙個cpu,那麼在某一時刻內最多只能有乙個執行緒在cpu中執行。這個時候,如果有多個執行緒需要執行,則將乙個時間間隔分成小的時間段,在每個時間段內執行不同的執行緒,某...
並行與併發的區別
併發性和並行性的區別可以用饅頭做比喻。前者相當於乙個人同時吃三個饅頭,而後者相當於三個人同時吃乙個饅頭。併發性 concurrence 指兩個或兩個以上的事件或活動在同一時間間隔內發生。併發的實質是乙個物理cpu 也可以多個物理cpu 在若干道程式之間多路復用,併發性是對有限物理資源強制行使多使用者...