教程集 www.jiaochengji.com
教程集 >  Golang编程  >  golang教程  >  正文 golang https 全局代理_Golang 调度器

golang https 全局代理_Golang 调度器

发布时间:2021-12-23   编辑:jiaochengji.com
教程集为您提供golang https 全局代理,Golang 调度器等资源,欢迎您收藏本站,我们将为您提供最新的golang https 全局代理,Golang 调度器资源
<h2>面试题:谈谈你对 Golang 调度模型的理解?</h2>

在 2020.2.22 这一天,面试了 B 站后台开发的岗位,被问到了这样的一个面试题。一下子就蒙了,今天恶补了一下,整理一下思路,避免下次还蒙。

<ol><li>说一下 GMP 模型、global queue、P 的 local queue。</li></ol> https://medium.com/a-journey-with-go/go-goroutine-os-thread-and-cpu-management-2f5a5eaf518a​medium.com

2. Work Stealing,即当一个 P 的 local queue empty 了,为了不同的 P 直接的负载均衡所采取的的策略。什么时候进出 global queue?为什么需要 local queue?[避免了获取 goroutine 产生的锁]。 参考这个:

https://medium.com/a-journey-with-go/go-work-stealing-in-go-scheduler-d439231be64d​medium.com https://medium.com/a-journey-with-go/go-g0-special-goroutine-8c778c6704d8​medium.com

3. 阻塞调用了,怎么办? 异步的网络调用,通过 netpoller (封装了 os 提供的 I/O 多路复用)来调度,避免产生过多的 M;同步的系统调用,则脱离 P ,将 P 绑定到空闲的 M 或者新建一个 M ,来调度;参照:

The Go netpoller​morsmachine.dk https://medium.com/a-journey-with-go/go-concurrency-scheduler-affinity-3b678f490488​medium.com https://www.ardanlabs.com/blog/2018/08/scheduling-in-go-part2.html​www.ardanlabs.com

4. 抢占式调度:

当某个goroutine执行超过10ms,sysmon会向其发起抢占调度请求,由于Go调度不像OS调度那样有时间片的概念,因此实际抢占机制要弱很多: Go中的抢占实际上是为G设置抢占标记(g.stackguard0),当G调用某函数时(更确切说,在通过newstack分配函数栈时),被编译器安插的指令会检查这个标记,并且将当前G以runtime.Goched的方式暂停,并加入到全局队列。

https://medium.com/a-journey-with-go/go-goroutine-and-preemption-d6bc2aa2f4b7​medium.com <h2>Reference:</h2> Go 调度模型​wudaijun.com
https://www.ardanlabs.com/blog/2018/08/scheduling-in-go-part2.html​www.ardanlabs.com https://segmentfault.com/a/1190000018775901​segmentfault.com
到此这篇关于“golang https 全局代理_Golang 调度器”的文章就介绍到这了,更多文章或继续浏览下面的相关文章,希望大家以后多多支持JQ教程网!

您可能感兴趣的文章:
golang https 全局代理_Golang 调度器
golang 所有进程休眠_Golang中Goroutine的调度流程
golang 没有名字参数_golang内核系列--深入理解plan9汇编&amp;实践
golang 动态生成函数_GoLang的优点和缺点
golang的调度总结
golang 初始化并赋值_Golang | 既是接口又是类型,interface是什么神仙用法?
golang静态代码检查_Golang面试题41道
golang key map 所有_Golang面试知识点总结
go 开了多少个goroutine 怎么看_Golang 协程Goroutine到底是怎么回事?(一)
golang runtime 简析

[关闭]
~ ~