【g0线程(协程)和m0线程一般都担当什么职责?】答:g0是执行调度任务,m0是第一个运行的内核系统线程 (1)m0 是 Go Runtime 所创建的第一个系统线程,一个 Go 进程只有一个 m0,也叫主线程。 (2)m0 是进程在启动时应该汇编直接复制给 m0 的,其他后续的 m 则都是 Go Runtime 内自行创建的。 (3)g0 和常规的 g 不一样,没有那么多种运行状态,也不会被调度程序抢占,调度本身就是在 g0 上运行的。 (4)g0 和其他创建的 g 在数据结构上是一样的,但是存在栈的差别。在 g0 上的栈分配的是系统栈,在 Linux 上栈大小默认固定 8MB,不能扩缩容。而常规的 g 起始只有 2KB,可扩容。 参考文档:https://blog.csdn.net/EDDYCJY/article/details/115683313
点赞 12

相关推荐

牛客网
牛客企业服务