讓我們簡要談談程序、執行緒和協程

Mondo 科技 更新 2024-02-02

要成為一名優秀的軟體工程師,流程和執行緒是必須了解和掌握的知識點,不僅因為它們是電腦科學的基礎知識,還因為知道如何在正確的時間使用它們可以提高程式的執行效率,即提高效能。

在了解程序和執行緒之前,我們先來談談程式,其實所謂的程式就是工程師編寫的**集合,程式經過編譯器或直譯器的處理,轉換成機器可以理解和執行的形式。

程序是執行並載入到記憶體中的程式。 程序也是作業系統分配的最小資源單位,可以從作業系統中獲取,如CPU時間、記憶體等依此類推,這意味著程序在執行時消耗了多少 CPU 和記憶體。 下面是 macOS Activity Monitor 的截圖,相信使用不管是哪個作業系統的讀者都見過類似的介面,並且監視器列出了你電腦正在執行的應用程式,它們實際上是程序,你可以看到每個程序消耗的 CPU、CPU 時間和每個程序的獨立 ID(PID)。

優點:每個程序都有自己獨立的系統資源分配空間,不同程序之間不共享資源,因此無需對程序進行互斥操作。 缺點:建立流程和切換流程的上下文更耗費資源,並且流程之間的通訊需求更複雜。 總結:乙個程式已經寫好了,但還沒有執行,程式執行完後就變成了乙個程序。

執行緒可以想象存在於程序中,乙個程序中至少會有乙個執行緒,前面說程序是作業系統分配的最小資源單位,執行緒是作業系統可以排程的最小單位,也就是說,實際執行任務的不是程序, 但是程序中的執行緒,乙個程序可以有多個執行緒,其中多個執行緒可以共享程序的系統資源,並且該程序可以比作乙個工廠。執行緒是工廠中負責實際執行任務的工人。

我認為,如果我們繼續使用工廠和工人的比喻,這兩個概念會更容易理解和記憶。

多處理就像設定許多工廠(通常是 CPU 的數量),每個工廠都有同時完成更多事情的優勢。

另一方面,多執行緒將許多員工聚集在同乙個工廠,其優點是有機會在相對較短的時間內完成相同的工作。

如前所述,在多執行緒中,不同的執行緒可以共享資源,如果兩個執行緒同時訪問或更改全域性變數,則可能會出現同步問題。 在執行過程中爭用資源時可能會發生死鎖,因此在使用多執行緒時必須特別小心以避免這些情況。

並行並行是利用多個CPU來實現對並行處理任務的需求(即多個任務同時執行),併發是多個任務在爭奪同乙個CPU的資源,所以在乙個時間點只會執行乙個任務, 僅僅因為切換速度非常快,使用者通常不會覺得任務實際上是在切換。

協程是乙個使用者模式的輕量級執行執行緒,協程的排程完全由使用者控制。

想想程序中的執行緒,以及執行緒中的協程。 協程的排程完全由使用者控制協程還將有自己的暫存器、上下文、堆疊等,協程的排程器控制當前執行的協程以及要阻止的協程。 如果協程卡住了,它會直接在使用者端將另乙個協程切換到這個執行緒繼續執行,這樣其他協程就不會被阻塞,從而可以有效利用資源,從而實現併發的概念。

相較於構建執行緒需要花費MB的記憶體,建立協程可以壓到kB級,協程之間的切換絕對比執行緒之間的切換要快。

通過本文,我們已經談到了程序、執行緒和協程的概念,但實際上,在使用多程序、多執行緒開發時需要考慮的因素很多,如果你不小心,可能會導致上面提到的race condition或者效能不公升反降,所以在實踐中還是要仔細考慮和驗證的。

相關問題答案

    程序和執行緒之間的區別

    過程。程序是正在執行的程式 程序駐留在記憶體中 它是系統執行資源分配和排程的獨立單元。每個程序都有自己的儲存空間和系統資源。注意 程序 A 和程序 B 的記憶體是獨立的,不共享。線。執行緒是程序中的單個順序控制流,也可以理解為執行路徑。單執行緒 程序包含順序控制流 乙個執行路徑 多執行緒 乙個程序包...

    讓我們談談海洋

    年月日,洋河股份 元,創年內新低。這個時候,我認為洋河的投資者可以習唐代的文章。唐淑芳的帖子從歲左右就開始談論洋河了,到現在已經年多了。過時的內容,主要是不會隨時間變化的部分。比如白酒的基本知識,洋河的歷史和現狀,白酒行業的優勢,如何看財務報告,如何面對市場波動等。這時候,相信會幫助你對持股有一定的...

    程序和執行緒之間有什麼區別,它們之間有什麼關係?

    程序是計算機中的基本操作單元,它表示正在執行的程式實體。每個程序都有自己的資源,例如記憶體空間 暫存器和檔案控制代碼。作業系統計畫不同的程序,以便可以同時執行計算機中的多個任務。執行緒是程序中的執行程序,是作業系統可以排程和執行的最小單元。乙個程序可以包含多個執行緒,每個執行緒都有自己的資料,例如程...

    讓我們簡單談談2024年的日食

    年的日食 話雖如此,那幾天和叔叔一家人一起玩,雖然時間不多,但收穫卻很豐碩。我不僅品嚐了很多美食,還欣賞了祖國的大江大山。說到食物,我忍不住多說了幾句話。中國有著年的飲食文化,許多美食不僅美味,而且蘊含著豐富的文化內涵。在這次旅行中,我們品嚐了很多正宗的食物。在舅舅的帶領下,我們嘗試了南京的鴨血粉絲...

    讓我們來談談葡萄酒的分類

    葡萄酒是現代餐飲文化不可或缺的一部分,尤其是西餐。那麼我們就來簡單談談葡萄酒的分類和相應的合適食物搭配。紅葡萄酒是在釀造過程中將葡萄皮和葡萄籽一起加工而成的葡萄酒,單寧含量豐富,是最常見的葡萄酒型別,其質量取決於原產地。紅葡萄酒可分為幹紅 半幹紅 甜紅等幾大類,其特點是糖的發酵。通常幹紅酒和紅酒與紅...