GMP模型中,G在发生系统调用或网络调用时,如何保证其他G不被阻塞?
- 系统调用通过syscall,先解绑PM,P选择或新建M,重新调度,G状态为syscall,阻塞当前M。系统调用结束后获取PLocal G队列或全局G队列
- chan阻塞,chan结构体中sendq, recvq保存待写入或读取的g,设置状态Waiting。发生读取或接受时通过goready激活G,重新调度
- netpoll阻塞,fd设置为非阻塞,结构体中保存因fd被挂起的G。poll发现fd ready后执行goready
探讨GMP模型中,系统调用、网络调用、chan阻塞及netpoll阻塞时,如何通过解绑PM、重新调度及状态管理,确保其他G不被阻塞,深入解析Go语言并发调度原理。
GMP模型中,G在发生系统调用或网络调用时,如何保证其他G不被阻塞?
1944
232
2237
1193

被折叠的 条评论
为什么被折叠?