協程與yield個人淺解

學海無涯肝作舟發表於2020-09-29

前情提要

資料是一種狀態,執行語句從一種狀態變為另外一種狀態。

本文內容

協程

程式和執行緒都由系統管理,協程完全由程式控制,就沒有執行緒核心態使用者態切換的開銷。

上下文切換,中斷處理程式將A的狀態儲存,A阻塞變為就緒時傳送一箇中斷訊息,將A狀態還原繼續執行。協程正是這麼一個邏輯模型。
輕量、可中斷、程式控制,可以很好地去處理非同步。

yield

在單執行緒情況中,關鍵字所在的那個語句可以看作中斷,上下文切換是將狀態儲存而yield是將狀態傳出。

在多執行緒互動裡,取回的資料給生成器。next時,狀態還原的同時會帶上新資料,以一種新狀態去執行語句。

相關文章