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

for真的会独占CPU吗?

kavinbright · · 6675 次点击
```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语言高级编程》中提过。 求大佬们帮忙释怀。。。
嗯教科书上是这么说的,实际测试也相符,一个核心也能输出。 如果想独占CPU的一个核心,在Windows上有相应的系统API,以前使用过。
#11
更多评论
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

用户登录

没有账号?注册

今日阅读排行

    加载中

一周阅读排行

    加载中