程序是系統分配資源和排程的基本單位, 每個cpu同一時刻只能處理乙個程序。程序擁有程式**段、開啟的檔案、資料資源、獨立的記憶體空間。
程序的侷限性是建立、撤銷、切換的開銷比較大。
執行緒是程式執行的最小單位,執行緒從屬於程序,是程式的實際執行者。乙個程序至少包含乙個主線程,也可以有更多的子執行緒;執行緒擁有自己的棧空間。
執行緒的優點:減小了程式併發執行的開銷,提高了系統的併發效能。
執行緒的缺點:執行緒沒有自己的系統資源,只有執行時不可缺少的資源,但是同一程序的各執行緒可以共享程序所擁有的系統資源。對於某些獨佔資源存在鎖機制,處理不當會出現死鎖。
協程是一種使用者態的輕量級執行緒;協程排程完全由使用者控制,沒有執行緒切換的系統資源開銷。
優點:協程執行效率高。因為子程式切換不是執行緒切換,由程式自身控制,沒有執行緒切換的開銷。協程不需要多執行緒的鎖機制。在協程中控制共享資源不加鎖,只需要判斷狀態就好
1、資源方面:程序間相互獨立,同一程序的各執行緒間共享。某程序內的執行緒在其他程序不可見2、通訊:程序間通訊ipc,程序間可以直接讀寫程序資料段進行通訊——需要程序同步和互斥手段輔助,以保證資料的一致性
3、排程和切換:執行緒上下文切換比程序上下文切換要快的多
4、在多執行緒os中,執行緒不是乙個可執行的實體
程序 執行緒 協程
多程序多執行緒的最終目地都是為了加快任務處理的時間,但是受限於cpu核數 只有多核才能實現並行,任務耗時 單核任務耗時 cpu核數 那麼在單核上執行多程序多執行緒是不是沒有用了,加快不了處理的速度了?答案肯定是不是的,不然這個東西設計出來太雞肋了,那它們加快處理的原理是什麼呢?乙個程序耗時 b程序耗...
程序 執行緒 協程
程序是系統資源分配的最小單位,系統由乙個個程序 程式 組成。一般情況下,包括文字區域 text region 資料區域 data region 和堆疊 stack region 檔案描述符表 程序每次開啟乙個檔案,系統就會在該程序的使用者檔案描述符表中分配乙個相應的表項,表項的索引返回給該程序,用於...
執行緒 程序 協程
執行緒是作業系統中進行運算排程的最小單位。執行緒被包含在程序之中,是程序中的實際運作單位。一條執行緒指的是程序中乙個單一順序的控制流,乙個程序可以併發多個執行緒,每條執行緒並行執行不同的任務。乙個執行緒是乙個execution context 執行上下文 即乙個cpu執行時所需要的一串指令。每個獨立...