思考:go为什么那么擅长并发?
答:从设计理解上来讲我觉着golang的CSP并发模型与GMP调度器是基石。你看虽然一个goroutine的创建才4kb,低成本golang可以做到海量实体(goroutine)并发,但并发的协程光并发不通讯意义其实就不大了,CSP就是管高效通讯的,高在哪?用golang社区里面的话就是 通讯才共享内存,而不是共享内存去通讯。好了,海量并发与通讯能力都没问题了,但一个个的实体最终是需要被cpu拿去执行的,必须对cpu足够友善才能表现更大能力啊,GMP就出来了,首先协程是用户态协作式的啊,用户态线程与内核态线程区别,大概意思就是用最少的上下文切换换取到了最大的goroutine执行能力,并且最大程度的避免了阻塞造成的cpu等待。点击查看很不错GMP分析
有疑问加站长微信联系(非本文作者)