程序,執行緒,協程的乙個簡單解釋

2021-09-24 11:17:44 字數 960 閱讀 9656

我們都知道計算機的核心是cpu,它承擔了所有計算機的任務,它就像乙個工廠,時刻執行著。

假定工廠的電力有限,一次只能供給乙個車間使用,也就是說,乙個車間開工的時候,其他車間都必須停工,背後的含義就是,單個cpu一次只能執行乙個任務。

程序就好比工廠裡的車間,他代表cpu所能處理的單個任務。任意時刻,cpu總是執行乙個程序,其它程序處於非執行狀態。

乙個車間裡,可以有很多任務人。他們協同完成乙個任務。

執行緒就好比是車間裡的工人,乙個程序可以包含多個執行緒。

車間的空間是工人們共享的,比如:許多房間是每個工人都可以進出的,這象徵乙個程序的記憶體空間是共享的,每個執行緒都可以使用這些共享記憶體。

可是,每個房間的大小不同,有些房間最多只能容納乙個人,比如:廁所,裡面有人的時候,其他人就不能進了,這代表乙個執行緒使用某些共享記憶體時,其它執行緒必須等他結束,才能用這一塊的記憶體。

乙個防止他人進入的簡單辦法,就是門口加一把鎖,先到的人鎖上門,後到的人看到上鎖,就在門口排隊,等鎖開啟再進去,這就叫「互斥鎖」,防止多個執行緒同時讀寫某一塊記憶體區域。

還有某些房間,可以同時容納n個人,比如廚房。也就是說,如果人數大於n,多出來的只能在外面等著。這好比某些記憶體區域,只能供給固定數目的執行緒使用。

這是的解決辦法,就是在門口掛n把鑰匙,進去的人就取一把鑰匙,出來的時候再把鑰匙掛回原處。後到的人發現鑰匙架空了,就知道必須要在門口等待了,這種訊號叫做「訊號量」,用來保證多個執行緒不會衝突。

協程不是程序,也不是程序,他就是乙個函式,乙個特殊的函式--可以在某個地方掛起,並且可以重新再掛起處繼續執行。協程,程序,執行緒相比,不是乙個維度的概念。

乙個程序可以包含多個執行緒,乙個執行緒可以包含多個協程。 但是,乙個執行緒內的多個協程的執行是序列的。也就是說當乙個協程執行時,其它協程必須掛起。

協程不適合計算密集型的場景,協程適合i/o(輸入/輸出,讀/寫)阻塞型。

簡單理解 程序 執行緒 協程

從計算機硬體角度 計算機的核心是cpu,所有計算任務都由cpu負責。單個cpu核心,在乙個cpu時間片裡,只能執行乙個程式任務。台式電腦 intel i5 處理器 四核四執行緒 四個cpu核心,每個核心有乙個邏輯處理器 同時可以處理四個任務。台式電腦 intel i7 處理器 四核八執行緒 inte...

程序與執行緒的乙個簡單解釋

原文 程序 process 和執行緒 thread 是作業系統的基本概念,但是它們比較抽象,不容易掌握。最近,我讀到一篇材料,發現有乙個很好的模擬,可以把它們解釋地清晰易懂。1.計算機的核心是cpu,它承擔了所有的計算任務。它就像一座工廠,時刻在執行。2.假定工廠的電力有限,一次只能供給乙個車間使用...

程序與執行緒的乙個簡單解釋

日期 2013年4月24日 程序 process 和執行緒 thread 是作業系統的基本概念,但是它們比較抽象,不容易掌握。最近,我讀到一篇材料,發現有乙個很好的模擬,可以把它們解釋地清晰易懂。1.計算機的核心是cpu,它承擔了所有的計算任務。它就像一座工廠,時刻在執行。2.假定工廠的電力有限,一...