```go
package main
import (
"fmt"
"runtime"
"time"
)
func main() {
var ok bool
cpuNu := runtime.NumCPU()
for i := 0; i < cpuNu; i++ {
go func() {
for {
if ok {
// to do
}
}
}()
}
time.Sleep(3 * time.Second)
fmt.Println("Not print...why???")
}
```
上面调用的代码不对,改了一下
```go
cpuNu := runtime.NumCPU()
for i := 0; i < cpuNu; i++ {
go func() {
for {
ra.Check()
}
}()
}
```
#6
更多评论
在写个限速的库,原本是用锁来实现的一些操作,后来改成原子操作,跑基准测试的时候发现的。试过其他语言不会这样,我想这种特殊场景暴露出goroutine调度的问题,可能是个坑。
#2