要搞懂函式為何能暫停和恢復,那你首先要了解協程的概念,
一個執行緒(或函式)執行到一半,可以暫停執行,將執行權交給另一個執行緒(或函式),等到稍后識訓執行權的時候,再恢復執行,這種可以并行執行、交換執行權的執行緒(或函式),就稱為協程,
協程是一種比執行緒更加輕量級的存在,普通執行緒是搶先式的,會爭奪cpu資源,而協程是合作的,可以把協程看成是跑在執行緒上的任務,一個執行緒上可以存在多個協程,但是在執行緒上同時只能執行一個協程,它的運行流程大致如下:
- 協程A開始執行
- 協程A執行到某個階段,進入暫停,執行權轉移到協程B
- 協程B執行完成或暫停,將執行權交還A
- 協程A恢復執行
協程遇到yield命令就暫停,等到執行權回傳,再從暫停的地方繼續往后執行,它的最大優點,就是代碼的寫法非常像同步操作,如果去除yield命令,簡直一模一樣,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/205329.html
標籤:AI
上一篇:TCP協議如何確保可靠傳輸
