备案信息修改网站负责人网站诊断方案

张小明 2026/1/9 17:16:14
备案信息修改网站负责人,网站诊断方案,网站服务器放置地,设计师免费资源导航文章目录协程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进行投诉反馈,一经查实,立即删除!

网站开发公司徐州设计公司和企业的区别

Buildbot架构演进与迁移决策:企业级CI/CD系统升级终极指南 【免费下载链接】buildbot Buildbot是一个开源的自动化构建系统,用于自动化软件构建、测试和部署过程。它提供了一套工具和库,可以帮助开发者构建和维护持续集成和持续部署(CI/CD)管…

张小明 2026/1/4 18:48:16 网站建设

南京做信息登记公司网站网站式小程序

想要零门槛体验专业音乐制作吗?Chrome音乐实验室将复杂的音乐理论转化为直观的互动游戏,让你在浏览器中就能创作出动人旋律。这个基于现代Web技术的开源项目,让音乐学习变得像玩乐一样简单有趣。无论你是音乐小白还是资深玩家,这里…

张小明 2026/1/4 12:48:14 网站建设

任县城乡建设局网站oa系统哪个品牌好

5分钟快速上手:让你的Windows mpv播放器变身专业影音神器 【免费下载链接】mpv-config 本项目为 windows 下 mpv 播放器的配置文件 (This project is the configuration file of mpv player on Windows) 项目地址: https://gitcode.com/gh_mirrors/mp/mpv-config …

张小明 2026/1/6 2:48:27 网站建设

佛山新网站制作上海备案证查询网站查询

如何安全地为 Elasticsearch 设置密码?从零构建细粒度权限体系你有没有遇到过这样的场景:刚部署好的 Elasticsearch 集群,还没来得及设防,就被扫描工具抓到了公网 IP,提示“未授权访问”?更可怕的是&#x…

张小明 2026/1/6 5:11:58 网站建设

石河子市建设局网站wordpress不能注册

第一章:Open-AutoGLM开源怎么运用Open-AutoGLM 是一个面向自动化自然语言处理任务的开源框架,支持模型微调、推理优化与任务编排。通过该框架,开发者可以快速部署和定制大语言模型应用,尤其适用于需要多轮对话理解与结构化输出生成…

张小明 2026/1/8 20:07:48 网站建设

c 做的网站怎么上传图片电商设计是干嘛的

Rockchip NPU部署实战:RKNN-Toolkit2让你的AI模型飞起来 【免费下载链接】rknn-toolkit2 项目地址: https://gitcode.com/gh_mirrors/rkn/rknn-toolkit2 还在为AI模型在嵌入式设备上的部署效率发愁吗?面对复杂的硬件加速和性能优化需求&#xff…

张小明 2026/1/6 3:04:34 网站建设