协程实现原理-源码分析
G 1 .goroutine的新建,休眠,恢复,停止都会受到go运行时的管理 2 .goroutine执行异步操作时,等操作完成之后在恢复,不会占用系统线程 3 .goroutine新建或者恢复会添加到运行队列,等待M取出并运行 4 .G的状态 1 .空闲中:idle:G刚创建,没有初始化 2 .待运行:runnable:g正在运行队列中,等待M取出并运行 3 .运行中:running:M正在运行这个G,这时M会拥有一个P 4 .系统调用:syscall:表示这个M这个在运行这个g发起的系统调用,这时M并不拥有p 5 .等待中waiting:表示g在等待某些条件完成。此时g不在运行也不再运行队列中,可能在channel等待队列中 6 .已终止:dead,表示G未被使用,可能已经执行完毕 7 ...阅读全文