Golang调度管理笔记--如何保证G不会被其余G的系统调用、网络调用阻塞?

GMP模型中,G在发生系统调用或网络调用时,如何保证其余G不被阻塞?web 系统调用经过syscall,先解绑PM,P选择或新建M,从新调度,G状态为syscall,阻塞当前M。系统调用结束后获取PLocal G队列或全局G队列 chan阻塞,chan结构体中sendq, recvq保存待写入或读取的g,设置状态Waiting。发生读取或接受时经过goready激活G,从新调度 netpoll阻塞
相关文章
相关标签/搜索