程序 執行緒和協程的區別

2021-08-13 15:03:36 字數 782 閱讀 3865

這是我的第一篇部落格,文章如有不足之處,請各位大神多多指教!

執行緒和程序的操作是由程式觸發系統介面,最後的執行者是系統;協程的操作則是程式設計師。

切換開銷(即排程和切換的時間):程序 > 執行緒 > 協程

程序和執行緒的區別:

概要

計算密集型 (cpu-bound)(適合多程序,而多執行緒是雞肋)和i/o密集型 (cpu-bound) (適合配置多執行緒,充分利用cpu資源)

i/o 密集型的的程式(如網路、磁碟io)一般在達到效能極限時,cpu佔用率仍然較低。

它的特點是cpu消耗很少,任務的大部分時間都在等待io操作完成(因為io的速度遠遠低於cpu和記憶體的速度)

因為任務本身需要大量i/o操作,此時用多執行緒,能充分利用cpu資源。因為i/o操作時,程式會有很多等待的機會,此時系統會切換到其他執行緒,把等待的時間利用上。

對於io密集型任務,任務越多,cpu效率越高,但也有乙個限度。

ps:對於io密集型任務,最合適的語言就是開發效率最高(**量最少)的語言,指令碼語言是首選,c語言最差。)

常見的大部分任務都是io密集型任務,比如web應用。

應用區別(上面ps中具體提到的):

計算密集型程式適合c語言多執行緒,

i/o密集型適合指令碼語言開發的多執行緒。

硬體配置和作業系統配置的不同對他們的影響

程序,執行緒和協程

程序 process 和執行緒 thread 是程式設計師必需掌握的核心知識。而多程序和多執行緒程式設計對於 的並行併發執行,提公升 效率和縮短執行時間至關重要。簡單總結 程序是資源分配的單位 執行緒是作業系統排程的單位 程序切換需要的資源很最大,效率很低 執行緒切換需要的資源一般,效率一般 當然了...

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

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

執行緒和協程的區別

協程,又稱為微執行緒,纖程 coroutine 通俗的理解 在乙個執行緒中的某個函式,可以在任何地方儲存當前函式的一些臨時變數等資訊,然後切換到另外乙個函式中執行,注意不是通過呼叫函式的方式做到的,並且切換的次數以及什麼時候再切換到原來的函式都由開發者自己確定。核心 單執行緒中,由開發者來進行排程的...