1. 首页
  2. 主题
  3. Go问与答

for真的会独占CPU吗?

kavinbright · · 6674 次点击
```go func main() { runtime.GOMAXPROCS(1) go func() { for i:=0;i<10 ;i++ { fmt.Println(i) } }() for {} } ``` 预想的是for独占M, goroutine不会执行,但是结果却是goroutine正常输出,这是为何? ```shell 0 1 2 3 4 5 6 7 8 9 ``` 我的go版本是: ```shell ☁ etc go version go version go1.17 darwin/amd64 ``` 我记得这个问题在《go语言高级编程》中提过。 求大佬们帮忙释怀。。。
buguang01
https://github.com/buguang01
因为新版本的golang解决了你说的这个问题。
#2
更多评论
jan-bar
想要拥有,必定付出。
执行`go tool compile -S test1.go &gt; xx.txt`你会发现`for {}`实际上被优化了,根本就不是一个循环 ![image.png](https://static.golangjob.cn/230529/f67793138f3f9b0e2ce90bb0fce6c795.png)
#3
你确定不是go的调度 把阻塞的 协程放到其他cpu运行了?对for做了优化,没看懂这个 优化成啥了
#4

用户登录

没有账号?注册

今日阅读排行

    加载中

一周阅读排行

    加载中