如下图所示,可以看到协程的本质就是,先注册该协程域中所有的挂起函数,记录为n个,回调是通过自身调用自身的resume函数实现的(回调栈?),注册完毕之后,每次通过switch来判断该执行哪个子函数,执行完之后return到上一层,然后再次swith判断,这时lable的值发生变化,执行下一个函数,函数的入参就是上一个函数的返回值,这样不停的return掉栈之后,直到执行完最后一个挂起函数,执行完毕,该协程域的工作也完毕。
结合协程本质上是线程池的调度,协程域也就是你使用线程池的一部分。从而实现了协程的执行。创建千个协程会压入千个栈? 这点还不太清楚。