執行緒和協程的區別

2021-10-09 13:32:01 字數 459 閱讀 4003

協程,又稱為微執行緒,纖程–coroutine

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

核心:單執行緒中,由開發者來進行排程的(切換不同程式的執行)

協程和執行緒差異: 那麼這個過程看起來比執行緒差不多。其實不然, 執行緒切換從系統層面遠不止儲存和恢復 cpu上下文這麼簡單。 作業系統為了程式執行的高效性每個執行緒都有自己快取cache等等資料,作業系統還會幫你做這些資料的恢復操作。所以執行緒的切換非常耗效能。但是協程的切換只是單純的操作cpu的上下文,所以一秒鐘切換個上百萬次系統都抗的住。

執行緒切換:切換執行不同的任務,由作業系統排程(不僅僅是操作cpu上下文)

協程切換:切換執行不同的函式,由開發者排程(僅僅是操作cpu上下文)

程序 執行緒和協程的區別

這是我的第一篇部落格,文章如有不足之處,請各位大神多多指教!執行緒和程序的操作是由程式觸發系統介面,最後的執行者是系統 協程的操作則是程式設計師。切換開銷 即排程和切換的時間 程序 執行緒 協程 程序和執行緒的區別 概要 計算密集型 cpu bound 適合多程序,而多執行緒是雞肋 和i o密集型 ...

Golang 執行緒 和 協程 的區別

目錄 前言 19年也快結束了。現在的總結更多是放在了草稿 而沒有發出,這次詳細分享下在 go 中,執行緒和協程的區別及其關係。協程 協程,英文名coroutine。但在 go 語言中,協程的英文名是 gorutine。它常常被用於進行多工,即併發作業。沒錯,就是多執行緒作業的那個作業。雖然在 go ...

Golang 執行緒 和 協程 的區別

部落格 github 掘金 和執行緒的整體對比 國慶愉快各位,距離上次發文快兩個月了,19年也快結束了。現在的總結更多是放在了草稿而沒有發出,這次詳細分享下在 go 中,執行緒和協程的區別及其關係。協程,英文名coroutine。但在 go 語言中,協程的英文名是 gorutine。它常常被用於進行...