程序 執行緒 協程

2022-08-23 06:57:13 字數 759 閱讀 5422

一、程序

程序和執行緒是包含關係,每個程序中都至少有一條執行緒

程序是計算機最小的資源分配單位

可以利用多核,可以實現並行

資料隔離

建立、銷毀、切換的時間開銷都比較大

隨著開啟的數量增加給作業系統帶來壓力

使用場景:充分利用多核,高計算型的程式,但啟動的數量有限

二、執行緒

執行緒是程序的一部分

執行緒是被cpu排程的最小單位

執行緒的切換是由作業系統完成的

在cpython直譯器下不能利用多核,資料共享

建立、銷毀、切換的時間開銷都比程序小很多

隨著開啟的數量增加給作業系統帶來壓力

使用場景:高io型,一些協程現有的模組不能規避io操作的功能,適合使用多執行緒

三、協程

協程的切換工作是使用者完成的

協程是乙個執行緒,完全不能利用多核,也不會產生資料不安全的現象

多個任務之間互相切換不依賴作業系統,無論開啟多少個協程都不會給作業系統帶來負擔

開銷比執行緒小

使用場景:高io型,通用的場景可以用協程現有的模組來規避一些io操作

四、執行緒和協程的區別

協程不會產生資料不安全的現象,執行緒會產生。

執行緒的排程不能干預,只能寫自己的邏輯,排程的事情由作業系統來

協程是使用者自己控制,能搶占更多的cpu資源取決於切換的策略(雙刃劍)

程序 執行緒 協程

多程序多執行緒的最終目地都是為了加快任務處理的時間,但是受限於cpu核數 只有多核才能實現並行,任務耗時 單核任務耗時 cpu核數 那麼在單核上執行多程序多執行緒是不是沒有用了,加快不了處理的速度了?答案肯定是不是的,不然這個東西設計出來太雞肋了,那它們加快處理的原理是什麼呢?乙個程序耗時 b程序耗...

程序 執行緒 協程

程序是系統資源分配的最小單位,系統由乙個個程序 程式 組成。一般情況下,包括文字區域 text region 資料區域 data region 和堆疊 stack region 檔案描述符表 程序每次開啟乙個檔案,系統就會在該程序的使用者檔案描述符表中分配乙個相應的表項,表項的索引返回給該程序,用於...

執行緒 程序 協程

執行緒是作業系統中進行運算排程的最小單位。執行緒被包含在程序之中,是程序中的實際運作單位。一條執行緒指的是程序中乙個單一順序的控制流,乙個程序可以併發多個執行緒,每條執行緒並行執行不同的任務。乙個執行緒是乙個execution context 執行上下文 即乙個cpu執行時所需要的一串指令。每個獨立...