|
FailTask(ResultTask, ex); } }} 這麽一來
,其實隻是要讓編譯器知道在這個方法裏,說明被調用的 Fib沒有同步完成。真正的係統調用最終仍然需要由底層承載它的係統線程來執行 。而 Green Thread 通常會在用戶態自行切換調用棧,當然,但現實中存在大量依賴特定係統線程的 API,方法就像普通同步方法一樣從頭開始執行。 JIT 才會在這一刻真正創建保存當前執行狀態所需要的 Continuation : mov rdi, rcxmov rsi, 0x... ; Continuation typecall [CORINFO_HELP_ALLOC_CONTINUATION]mov r12, rax
隨後把恢複執行時仍然需要的局部狀態保存進去 : mov dword ptr [r12+0x48], ebx
最後: mov rcx, r12ret
把剛剛創建好的 Continuation放進 rcx |