對執行緒、協程和同步非同步、阻塞非阻塞的理解

xing393939發表於2021-03-23

執行緒、協程

參考文章:goroutine 和執行緒的區別

三個方面 執行緒 協程
記憶體消耗 1M 2K,自動擴容
建立銷毀 核心級 使用者級
切換 需儲存恢復16個通用暫存器、4個段暫存器
16個XMM、16個AVX、PC、FP、SP
需儲存恢復PC、BP、SP
(耗時) 1000-1500納秒 200納秒

同步非同步、阻塞非阻塞

通俗講解 非同步,非阻塞和 IO 複用解釋的很清楚。這裡我舉一個例子,假設你和老婆要吃早餐上班,兩人分配的任務是這樣的:你烤麵包(有面包機),老婆燒開水(有燒水壺),然後兩人還需刷牙洗臉(嘿嘿沒錯,早餐就是白開水加麵包)。

兩兩組合的場景:

  1. 同步阻塞:同步是指你完成任務後老婆才開始任務,阻塞是指烤麵包和燒開水的時候我和老婆都在旁邊傻等著。
  2. 同步非阻塞:同步是指你完成任務後老婆才開始任務,非阻塞是指烤麵包和燒開水的時候我和老婆在刷牙洗臉。
  3. 非同步阻塞:非同步是指我和老婆同時開工完成任務,阻塞是指烤麵包和燒開水的時候我和老婆都在旁邊傻等著。
  4. 非同步非阻塞:非同步是指我和老婆同時開工完成任務,非阻塞是指烤麵包和燒開水的時候我和老婆在刷牙洗臉。
本作品採用《CC 協議》,轉載必須註明作者和本文連結

相關文章