1.Go调度器经过几个大版本的迭代才有今天的优异性能

// 附录2

Q:4. go语言如何(在windows, linux)最大化利用 cpu 时间? (讲出实现原理)

// 附录1

Go 程序提供了网络轮询器(NetPoller)来处理网络请求和 IO 操作的问题,其后台通过 kqueue(MacOS),epoll(Linux)或 iocp(Windows)来实现 IO 多路复用。

A: 1.对于系统调用,用了epoll,让cpu最大化的有用户太线程干活儿

2.对于非系统调用,一直有goroutine在运行,内核线程不会停

本文主要从 Go 调度器架构层面上介绍了 G-P-M 模型,通过该模型怎样实现少量内核线程支撑大量 Goroutine 的并发运行。

以及通过 NetPoller、sysmon 等帮助 Go 程序减少线程阻塞,充分利用已有的计算资源,从而最大限度提高 Go 程序的运行效率。

参考

1.Go 为什么这么快 GPM模型简介 2. 3.可视化GMP分析trace(TODO)

原创文章转载请注明出处: go语言如何最大化利用cpu时间?&&Go为什么这么快?