初级会员
  • 第 3008 位会员
  • cfanbo
  • haohtml@gmail.com
  • 2015-06-13 11:37:00
  • Offline
  • 19 49

最近分享的资源

    暂无

最近发布的项目

    暂无

最近的评论

  • 不写待遇,差评
  • Go:GC 是如何标记内存的?https://studygolang.com/articles/25916
  • 也有过这类的疑惑,暂时无解
  • 1. 在没有P的GM下,所有G都放在全局队列里,这时如果所有M都去拿G的话,就需要一个全局大锁,性能要下降很多。而引入了P后,每个P有自己的runq,这就解决了大锁互斥的性能问题; 2. 另外一点就是内存问题,GM模型下,内存是M.mcache,当每遇到一个系统调用的时候,就会浪费掉一个M.mcache。引入P后,改为了p.mcache,这样就算系统调用,移走M的话,内存还是在P上,其它G/M还可以使用这块内存; 3. 另外有人说GM还存在goroutine传递问题,暂时未理解这块的说法
  • 首先要明白它不是从上到下执行的,这是两个条件,只要满足其中一个就可以继续下一轮select。如果本轮超出10ms没有收到isLive,则会执行第二个case,然后下一轮。如果在10ms内收到了isLive,则立即执行第一个case ,然后再是下一轮的select