摘要: 当m在执行某个g的时候,g非常耗时,例如一个for循环,每次循环sleep1分钟,循环1000次。 这个例子看似无聊,却是很难解决的,成功的避开了2个系统切换时机。 如果这个时候,一直执行这个g,别的g就会得不到执行,例如有g是处理用户支付的,这样就会造成收钱不积极。 协程饥饿问题 本地队列 本地队 阅读全文
posted @ 2023-11-30 22:15 杨阳的技术博客 阅读(375) 评论(0) 推荐(0)
摘要: go的协程和线程都绕不过GMP,关于GMP基本的工作流程,有go开发经验的大致都懂,这边更多关注GMP如何解决一些类似 协程饥渴的问题,以及底层的大致实现原理。 多线程循环 上篇讲了单线程是如何循环的,这里还是为 GMP的出场 大致介绍下。 工作模型 多个M都去全局G的队列中获取 g,所以,全局g的 阅读全文
posted @ 2023-11-30 18:10 杨阳的技术博客 阅读(193) 评论(0) 推荐(0)
摘要: 协程与线程 线程在创建、切换、销毁时候,需要消耗CPU的资源。 协程就是将一段程序的运行状态打包, 可以在线程之间调度。减少CPU在操作线程的消耗 协程、线程、进程 这块网上非常多文章讲了,就不多叙述了。 归纳下: 进程用分配内存空间 线程用来分配CPU时间 协程用来精细利用线程 协程的本质是一段包 阅读全文
posted @ 2023-11-30 12:21 杨阳的技术博客 阅读(272) 评论(0) 推荐(0)