一起来做贼:Goroutine原理和Work stealing

最近在看Goroutine的实现原理,用户空间实现的并发模型。在用户空间进行调度不比 在内核级别,因为内核可以通过CPU中断夺回控制权,但是用户空间把控制权交给一段 代码之后,需要那段代码主动交出权力才可以。当然也可以通过一些trick,例如编译 的时候检测,然后自动插入某些让出CPU的代码。或者在生成的指令中插入。

关于Goroutine网上已经有很多篇很棒的文章了,我认为看这几篇就够了:

其中当一个P的G队列消耗完了,就会尝试去其他P的G队列里偷一些任务过来。看看wikipedia:


微信公众号
关注公众号,获得及时更新

更多文章
  • 把USB设备穿透给虚拟机里的系统
  • debug故事之:事务让生活更美好
  • Go设计模式:模板模式
  • Go设计模式:适配器模式
  • Go设计模式:Iterator
  • glusterfs 笔记
  • 用peewee代替SQLAlchemy
  • Go的slice工作机制
  • Linux系统迁移记录(从HDD到SSD)
  • Redis是如何工作的?
  • virsh自动关闭windows虚拟机
  • Golang sort源码阅读
  • 分治的思维方式
  • Debian 使用NetworkManager之后networking.service崩溃
  • httprouter源码阅读与分析