程序是程式的一次執行過程,是乙個動態概念,是程式在執行過程中分配和管理資源的基本單位,每乙個程序都有乙個自己的位址空間,至少有 5 種基本狀態,它們是:初始態,執行態,等待狀態,就緒狀態,終止狀態。
執行緒是cpu排程和分派的基本單位,它可與同屬乙個程序的其他的執行緒共享程序所擁有的全部資源。
協程,是一種比執行緒更加輕量級的存在,協程不是被作業系統核心所管理,而完全是由程式所控制(也就是在使用者態執行)。這樣帶來的好處就是效能得到了很大的提公升,不會像執行緒切換那樣消耗資源。協程在子程式內部是可中斷的,然後轉而執行別的子程式,在適當的時候再返回來接著執行。
併發:在作業系統中,是指乙個時間段中有幾個程式都處於已啟動執行到執行完畢之間,且這幾個程式都是在同乙個處理機上執行。其中兩種併發關係分別是同步和互斥
互斥:程序間相互排斥的使用臨界資源的現象,就叫互斥
同步:程序之間的關係不是相互排斥臨界資源的關係,而是相互依賴的關係。進一步的說明:就是前乙個程序的輸出作為後乙個程序的輸入,當第乙個程序沒有輸出時第二個程序必須等待。具有同步關係的一組併發程序相互傳送的資訊稱為訊息或事件。其中併發又有偽併發和真併發,偽併發是指單核處理器的併發,真併發是指多核處理器的併發。
並行:在單處理器中多道程式設計系統中,程序被交替執行,表現出一種併發的外部特種;在多處理器系統中,程序不僅可以交替執行,而且可以重疊執行。在多處理器上的程式才可實現並行處理。從而可知,並行是針對多處理器而言的。並行是同時發生的多個併發事件,具有併發的含義,但併發不一定並行,也亦是說併發事件之間不一定要同一時刻發生。
非同步:非同步和同步是相對的,同步就是順序執行,執行完乙個再執行下乙個,需要等待、協調執行。非同步就是彼此獨立,在等待某事件的過程中繼續做自己的事,不需要等待這一事件完成後再工作。執行緒就是實現非同步的乙個方式。非同步是讓呼叫方法的主線程不需要同步等待另一線程的完成,從而可以讓主線程幹其它的事情。
非同步和多執行緒並不是乙個同等關係,非同步是最終目的,多執行緒只是我們實現非同步的一種手段。非同步是當乙個呼叫請求傳送給被呼叫者,而呼叫者不用等待其結果的返回而可以做其它的事情。實現非同步可以採用多執行緒技術或則交給另外的程序來處理。
多執行緒 多程序 協程
占用的資源 程序 執行緒 協程 程序的顆粒度太大,每次都要有上下的調入,儲存,調出。執行緒 乙個軟體的執行不可能是一條邏輯執行的,必定有多個分支和多個程式段,就好比要實現程式a,實際分成 a,b,c等多個塊組合而成 這裡的a,b,c就是執行緒,也就是說執行緒是共享了程序的上下文環境,的更為細小的cp...
多執行緒 多程序 協程
程序 個執行的程式 就是乙個程序,沒有執行的 叫程式,程序是系統資源分配的最 小單位,程序擁有自己獨立的記憶體空間,所以程序間資料不共享,開銷大。執行緒 排程執行的最小單位 也叫執行路徑,不能獨立存在,依賴程序存在乙個程序至少有一 個 執行緒,叫主線程,而多個執行緒共享記憶體 資料共享,共享全域性變...
程序 執行緒 協程
多程序多執行緒的最終目地都是為了加快任務處理的時間,但是受限於cpu核數 只有多核才能實現並行,任務耗時 單核任務耗時 cpu核數 那麼在單核上執行多程序多執行緒是不是沒有用了,加快不了處理的速度了?答案肯定是不是的,不然這個東西設計出來太雞肋了,那它們加快處理的原理是什麼呢?乙個程序耗時 b程序耗...