多執行緒 理解多執行緒(一)

2021-10-07 10:18:04 字數 1083 閱讀 5586

程序:程序是cpu分配資源的基本單位

執行緒:執行緒是cpu排程的基本單位

資源分配給程序,所有執行緒共享該程序的資源

當執行緒數大於cpu的數量,會出現時間片的輪詢。

cpu時間片是直接分配給執行緒的,執行緒拿到cpu時間片就能執行了

cpu時間片不是先分給程序然後再由程序分給程序下的執行緒的。

所有的程序並行,執行緒並行都是看起來是並行,其實都是cpu片輪換使用。

執行緒分到了cpu時間片,就可以認為這個執行緒所屬的程序在執行,這樣就看起來是程序並行。

併發和並行的區別

併發:當有多個執行緒在操作時,如果系統只有乙個cpu,把cpu執行時間劃分成若干個時間片,分配給各個執行緒執行,在乙個時間段的執行緒**執行時,其它執行緒處於掛起狀態。這種方式我們稱之為併發(concurrent)。併發=間隔發生

並行:當系統有乙個以上cpu時,則執行緒的操作有可能非併發。當乙個cpu執行乙個執行緒時,另乙個cpu可以執行另乙個執行緒,兩個執行緒互不搶占cpu資源,可以同時進行,這種方式我們稱之為並行(parallel)。 並行=同時進行

區別:並行是指兩個或者多個事件在同一時刻發生;而併發是指兩個或多個事件在同一時間間隔內發生。

並行是同時做多件事情。

併發表示同時發生了多件事情,通過時間片切換,哪怕只有單一的核心,也可以實現「同時做多件事情」這個效果。

也就是說,併發可以是虛擬的同時執行,也可以是真的同時執行。而並行的意思是真的同時執行。

作業系統的設計,可以歸納為3點。

以多程序形式,允許多個任務同時執行。

以多執行緒形式,允許乙個任務拆分成多個執行緒執行。

cpu提供協調機制,允許執行緒之間共享資源,防止執行緒之間產生衝突。

多執行緒,實際上是計算機多種資源的並行運用,跟cpu有幾個核心沒什麼關係。

理解多執行緒(一)

其實在單道系統時期,是沒有併發的,cpu更是沒有多核。程式設計師輸入資料,計算機處理,計算機輸出結果,每次乙個程式執行完才能執行其他程式。但不久聰明的程式設計師們發現這樣極大的浪費計算機資源。比如,在執行乙個算術問題時候,程式設計師輸入資料是很慢的 scanf 而這幾秒鐘cpu卻阻塞在這裡等待io完...

多執行緒理解

本文介紹我對於多執行緒的理解。一 概念 1.作業系統下的多程序場景 但其實上面的情景是屬於作業系統下的多程序,不是單個程式內的多程序,這種多程序跟我們在單個程式內的多執行緒沒有什麼可以比較的。2.執行緒 舉個最簡單例子 我們的任務需要兩個計算型操作 a b 每個操作耗時10秒,如果是單執行緒,這時我...

多執行緒理解

單核cpu 單執行緒與多執行緒 執行時都是併發操作 a.執行條件 無io等操作,時間大小 多執行緒 單執行緒,原因 多執行緒執行時執行緒切換耗時間 b.執行條件 有io等操作,時間大小 單執行緒 多執行緒,原因 單執行緒要等待io的操作時間,從而加長時間 單核多執行緒的作用 在b中展現出優點。多核c...