詳解 程序、執行緒和協程的區別
首先,給出「程序、執行緒和協程」的特點:
接下來,以乙個形象的例子,進一步講述「程序、執行緒和協程」三者之間的區別:
假設有乙個單核的作業系統,系統上沒有其它的程式需要執行,現有兩個執行緒 a 和 b,a 和 b 在單獨執行時都需要 10 秒來完成自己的任務,而且任務都是運算操作,執行緒 a 和 b 之間沒有競爭和共享資料的問題。現在讓 a 和 b程式設計客棧 兩個執行緒並行,則作業系統會不停的在 a 和 b 兩個執行緒之間切換,達到一種偽並行的效果。
如果作業系統切換的頻率是每秒一次,切換的成本是 0.1 秒(主要是棧切換),則總共需要 20 + 19 * 0.1 = 21.9 秒;如果使用協程的方式,可以先執行協程 a,a 結束的時程式設計客棧候讓位給協程 b,只發生一次切換,則總共需要 20 + 1 * 0.1 = 20.1 秒。如果作業系統是雙核的,而且執行緒是標準執行緒,那麼執行緒 a 和 b 可以達到真的並行,則總時間為 10 秒;而協程的方式仍然需rnoml要 20.1 秒的時間。
本文標題: 詳細介紹 程序、執行緒和協程的區別
本文位址: /wangluo/qitazonghe/183439.html
程序 執行緒和協程的區別
這是我的第一篇部落格,文章如有不足之處,請各位大神多多指教!執行緒和程序的操作是由程式觸發系統介面,最後的執行者是系統 協程的操作則是程式設計師。切換開銷 即排程和切換的時間 程序 執行緒 協程 程序和執行緒的區別 概要 計算密集型 cpu bound 適合多程序,而多執行緒是雞肋 和i o密集型 ...
程序,執行緒和協程
程序 process 和執行緒 thread 是程式設計師必需掌握的核心知識。而多程序和多執行緒程式設計對於 的並行併發執行,提公升 效率和縮短執行時間至關重要。簡單總結 程序是資源分配的單位 執行緒是作業系統排程的單位 程序切換需要的資源很最大,效率很低 執行緒切換需要的資源一般,效率一般 當然了...
協程與執行緒的區別 程序 執行緒 和 協程對比
程序 執行緒,都是有核心進行排程,有 cpu 時間片的概念,進行 搶占式排程。協程 使用者級執行緒 完全由使用者自己的程式進行排程 協作式排程 需要協程自己主動把控制權轉讓出去之後,其他協程才能被執行到。goroutine 和協程區別 本質上,goroutine 就是協程。不同的是,golang 在...