返回到主執行緒這裡用的則是asm_amc_coroutine_return_to_main()彙編函式,和切換協程的函式就是差在第一句彙編語句上:popq %rsi這句話後面的註釋也說了,其實還是玩堆疊
schedule是所有協程公用的一個環境,其中:stack——所有協程執行時的棧空間,新建立協程時在四大函式的getcontext之後,makecontext之前設定,協程執行時會以該空間作為棧空間main——主協程,當建立的協程呼叫cor
}要讓這個函式正確執行,我們需要sync包含一個promise_type,而這個promise_type提供下面的介面initial_suspend()get_return_object()final_suspend()return_val
完成了一下功能:在協程執行的任意位置暫停,讓出執行許可權恢復協程繼續上次中斷的地方繼續執行透過static變數和資料結構儲存協程資料協程讓出執行後,等待特定的幀數,時間,和其它協程完成開始看程式碼:typedef enum{/*** Cor
對於Coroutine,編譯器需要產生一些程式碼,在每次的大迴圈中,Unity的Update()返回後,保證是yield後的程式碼被正確呼叫,這樣就形成了我們看到的一個function能分段執行的機制