文化建设新闻南阳网站建设seo

张小明 2026/3/13 3:21:25
文化建设新闻,南阳网站建设seo,综合服务平台一站式服务平台网站开发,seo网站推广免费文章目录协程golang调度器1. golang对早期调度器的处理2. GMP3. 调度器的设计策略#xff08;1#xff09;复用线程#xff08;2#xff09;利用并行#xff08;3#xff09;抢占#xff08;4#xff09;全局 G 队列创建 goroutine1. 创建 goroutine2. 退出 goroutine协…文章目录协程golang调度器1. golang对早期调度器的处理2. GMP3. 调度器的设计策略1复用线程2利用并行3抢占4全局 G 队列创建 goroutine1. 创建 goroutine2. 退出 goroutine协程传统的时间片轮转对线程的调度CPU切换会消耗大量成本甚至在线程数量很多的情况下CPU切换的时间高于线程的执行时间。期望提高 CPU 利用率解决高消耗调度 CPU 以及 高内存占用。将线程分为内核态和用户态CPU 本身是无感的从 CPU 的角度看去还是认为自己处理的是整个线程包括内核态和用户态通过一个协程调度器来进行业务调度处理 CPU 高调度影响缺点因为是轮询当某个协程阻塞时会对下一个协程造成影响。1:1 关系M:N 关系重心在于优化协程调度器协程调度器越好CPU 利用率越高。golang调度器1. golang对早期调度器的处理调度器缺点1.创建、销毁、调度G都需要每个M获取锁这就形成了激烈的锁竞争。2.M转移G会造成延迟和额外的系统负载。3.系统调用(CPU在M之间的切换导致频繁的线程阻塞和取消阻塞操作增加了系统开销。2. GMPprocessor处理器用来处理 goroutine 协程。每个线程M通过一个process调度器P来处理协程G每个 P 管理一个存储 G 的本地队列还会有一个额外的全局队列。系统能够并行的最高的协程数量就是 GOMAXPROCES 的个数。3. 调度器的设计策略1复用线程work stealing 机制M1 正在通过 P 正在处理 G1P的本地队列中还有等待处理的 G。M2 此时是空闲的希望能利用上 M2它自身没有任何协程就会从其他队列中偷取一个 G 过来进行处理:hand off 机制M1 线程的 G1 阻塞了CPU 一直等待没有任何意义并且阻塞了队列中的 G2 执行。把 M1 和 P 分离创建一个新的线程来处理 P2利用并行GOMAXPROCES 限定 P 的个数 CPU核心数/23抢占对于每个 GCPU 最多等待执行 10ms时间到了另外的 G 就会抢占 CPU4全局 G 队列M2 此时没有任何队列会优先从其他队列偷 G但 M1 队列中也没有 G就会从全局队列中获取 G从全局队列中获取 G 需要进行加解锁速度会比较慢。创建 goroutine1. 创建 goroutinepackagemainimport(fmttime)funcnewTask(){i:0for{i;fmt.Printf(new goroutine: %d\n,i)time.Sleep(1*time.Second)}}// 主 gorutinefuncmain(){// 创建一个 go 程去执行 newTask()gonewTask()i:0for{ifmt.Printf(main goroutine: %d\n,i)time.Sleep(1*time.Second)}}main退出packagemainimport(fmttime)funcnewTask(){i:0for{i;fmt.Printf(new goroutine: %d\n,i)time.Sleep(1*time.Second)}}// 主 gorutinefuncmain(){// 创建一个 go 程去执行 newTask()gonewTask()fmt.Println(main goroutine)/* i : 0 for { i fmt.Printf(main goroutine: %d\n, i) time.Sleep(1 * time.Second) } */}主 goroutine 中创建了一个 go 程让它去执行 newTask() 方法后会接着继续执行主 goroutine 内的代码执行到 fmt,Println 最后一行就直接退出。2. 退出 goroutinepackagemainimport(fmtruntimetime)funcmain(){// 用 go 创建承载一个形参为空返回值为空的函数gofunc(){deferfmt.Println(defer A)func(){deferfmt.Println(defer B)// 退出当前 goroutineruntime.Goexit()fmt.Println(B)}()fmt.Println(A)}()// 死循环for{time.Sleep(1*time.Second)}}
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

网站建设与管理课后总结成年男女做羞羞视频网站

使用持续集成构建、测试和部署容器及自动化基础设施 1. 持续集成流程中的清理工作 在持续集成(CI)流程中,为了确保资源的有效管理,需要在测试完成后进行清理工作。可以创建一个新的 cleanup_test 阶段,并定义一个名为 cleanup_tests 的作业在该阶段运行。通常情况下…

张小明 2026/3/5 3:59:58 网站建设

网站开发的风险南昌网站建设哪里好

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

张小明 2026/3/5 3:57:56 网站建设

湛江网站公司网站关键词推广

SmartDNS智能健康检查:彻底解决DNS服务器故障的终极方案 【免费下载链接】smartdns A local DNS server to obtain the fastest website IP for the best Internet experience, support DoT, DoH. 一个本地DNS服务器,获取最快的网站IP,获得最…

张小明 2026/3/5 3:59:19 网站建设

杭州网站设计网站网站的相关链接怎么做

Navicat Mac版试用期重置终极方案:一键解锁完整功能 【免费下载链接】navicat_reset_mac navicat16 mac版无限重置试用期脚本 项目地址: https://gitcode.com/gh_mirrors/na/navicat_reset_mac 还在为Navicat试用期到期而困扰吗?这款专为Mac用户设…

张小明 2026/3/5 3:57:57 网站建设

临时域名用于网站调试如何在淘宝网做自己的网站

初的方案选择了业界熟知的 GitLab ,但很快就遇到了瓶颈:仅仅是基础的代码托管功能,GitLab全套服务(主进程、PostgreSQL 和 Redis )在运行一段时间后,内存占用一度逼近 10GB。这对于我们的轻量级项目需求而言…

张小明 2026/3/5 3:57:59 网站建设

网站改版是什么如何用excel来做网站后台

TaskFlow任务编排框架:从零开始构建高效业务流程 【免费下载链接】taskflow taskflow是一款轻量、简单易用、可灵活扩展的通用任务编排框架,基于有向无环图(DAG)的方式实现,框架提供了组件复用、同步/异步编排、条件判断、分支选择等能力&…

张小明 2026/3/5 3:58:02 网站建设