程序 執行緒 協程對比

2021-08-27 23:47:59 字數 812 閱讀 2376

請仔細理解如下的通俗描述

● 有乙個老闆想要開個工廠進行生產某件商品(例如剪子)

● 他需要花一些財力物力製作一條生產線,這個生產線上有很多的器件以及材料這些所有的 為了能夠生產剪子而準備的資源稱之為:程序

● 只有生產線是不能夠進行生產的,所以老闆的找個工人來進行生產,這個工人能夠利用這些材料最終一步步的將剪子做出來,這個來做事情的工人稱之為:執行緒

● 這個老闆為了提高生產率,想到3種辦法:

a. 在這條生產線上多招些工人,一起來做剪子,這樣效率是成倍増長,即單程序 多執行緒方式

b. 老闆發現這條生產線上的工人不是越多越好,因為一條生產線的資源以及材料畢竟有限,所以老闆又花了些財力物力購置了另外一條生產線,然後再招些工人這樣效率又再一步提高了,即多程序 多執行緒方式

c. 老闆發現,現在已經有了很多條生產線,並且每條生產線上已經有很多任務人了(即程式是多程序的,每個程序中又有多個執行緒),為了再次提高效率,老闆想了個損招,規定:如果某個員工在上班時臨時沒事或者再等待某些條件(比如等待另乙個工人生產完謀道工序 之後他才能再次工作) ,那麼這個員工就利用這個時間去做其它的事情,那麼也就是說:如果乙個執行緒等待某些條件,可以充分利用這個時間去做其它事情,其實這就是:協程方式

簡單總結

1. 程序是資源分配的單位

2. 執行緒是cpu排程的單位

3. 程序切換需要的資源很最大,效率很低

4. 執行緒切換需要的資源一般,效率一般(當然了在不考慮gil的情況下)

5. 協程切換任務資源很小,效率高

6. 多程序、多執行緒根據cpu核數不一樣可能是並行的,但是協程是在乙個執行緒中 所以是併發

協程與執行緒的區別 程序 執行緒 和 協程對比

程序 執行緒,都是有核心進行排程,有 cpu 時間片的概念,進行 搶占式排程。協程 使用者級執行緒 完全由使用者自己的程式進行排程 協作式排程 需要協程自己主動把控制權轉讓出去之後,其他協程才能被執行到。goroutine 和協程區別 本質上,goroutine 就是協程。不同的是,golang 在...

程序 執行緒 協程

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

程序 執行緒 協程

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