1、程序
1)作業系統資源分配的基本單位。
2)程序狀態:阻塞、就緒和執行。
3)每個程序都有自己獨立的程序位址空間。
4)乙個程序崩潰了,不影響其他程序。
5)程序建立、切換和銷毀等開銷大。
6)程序間通訊,效率低。
2、執行緒
1)作業系統排程的基本單位。
2)執行緒獨有的資源,主要為了執行緒切換時,保留tcb(thread control block,執行緒控制塊)
2.1)執行緒id,執行緒在程序中的唯一標識。
2.2)暫存器,如函式呼叫棧的指標。
2.3)棧,如函式呼叫棧。
2.4)錯誤返回碼
2.5)執行緒優先順序,用於排程。
2.6)訊號遮蔽碼,每個執行緒關心的訊號可能不一樣。
3)同個程序的多個執行緒,共享程序位址空間。
4)主線程崩潰,同個程序的其他執行緒也會崩潰。
5)執行緒建立、切換和銷毀等開銷小(相對程序來說),執行緒切換要涉及到核心態。
6)執行緒間通訊,因為共享程序位址空間,效率高很多,特別是在通訊資料量大時更明顯。
3. 協程(coroutine)
協程是一種輕量級的使用者態執行緒,作業系統對協程無感知。實現的是協作式排程(非搶占式排程),即協程切換由當前協程控制,主動讓出cpu(例如當前協程在等待非同步網路io時)。通常情況下,乙個執行緒包含多個協程。
1、優點
1)協程切換的開銷比執行緒切換小很多。原本需要執行緒數量越多的場景,用協程的效能優勢就越明顯。
可以參考:
程序 執行緒 協程
多程序多執行緒的最終目地都是為了加快任務處理的時間,但是受限於cpu核數 只有多核才能實現並行,任務耗時 單核任務耗時 cpu核數 那麼在單核上執行多程序多執行緒是不是沒有用了,加快不了處理的速度了?答案肯定是不是的,不然這個東西設計出來太雞肋了,那它們加快處理的原理是什麼呢?乙個程序耗時 b程序耗...
程序 執行緒 協程
程序是系統資源分配的最小單位,系統由乙個個程序 程式 組成。一般情況下,包括文字區域 text region 資料區域 data region 和堆疊 stack region 檔案描述符表 程序每次開啟乙個檔案,系統就會在該程序的使用者檔案描述符表中分配乙個相應的表項,表項的索引返回給該程序,用於...
執行緒 程序 協程
執行緒是作業系統中進行運算排程的最小單位。執行緒被包含在程序之中,是程序中的實際運作單位。一條執行緒指的是程序中乙個單一順序的控制流,乙個程序可以併發多個執行緒,每條執行緒並行執行不同的任務。乙個執行緒是乙個execution context 執行上下文 即乙個cpu執行時所需要的一串指令。每個獨立...