1. 程式人生 > >程序&執行緒&協程

程序&執行緒&協程

程序:程式的一次執行,在系統內有獨立的地址空間、記憶體,以管理獨立的程式執行、切換。不同程序通過程序間通訊來通訊,由於程序比較重量,佔據獨立的記憶體,所以上下文程序間的切換開銷(棧、暫存器、虛擬記憶體、檔案控制代碼等)比較大,但相對比較安全穩定。執行緒:CPU排程的最小單位,一個程序可包含多個執行緒,多個執行緒在同一程序中共享程序的全部資源。執行緒間的通訊主要通過共享記憶體,故上下文切換很快、資源開銷較少,但比程序不夠穩定容易丟失資料。協程:即使用者態下的執行緒,使用者態自管理的協作式“執行緒”,不用搶佔核心進行排程與切換,可通過程序內部進行排程和切換(使得每個執行緒需要自己通過呼叫某個方法,主動交出控制權),故有以下好處:
  1. 省去了CPU執行緒切換的開銷;
  2. 降低了記憶體消耗;
  3. 提高了CPU快取命中率;
  4. 提升整體效能;
  5. 提升系統負載能力;
補充:(協程的話相當於程式內部自己實現一個函式排程,在一個函式執行時,中斷函式,並且儲存函式上下文,之後在執行其他函式,之後再返回執行原函式.)