1. 首页
  2. 主题
  3. Go基础

time.Sleep引发goroutine调度问题

abing10631 · · 3014 次点击
运行环境:mac go的版本是1.5 协程中使用time.Sleep的时候造成死锁,麻烦哪位大神给解答下。 代码1: 运行正常 ```go func test_sleep(index int){ for i:=0;i<100;i++{ fmt.Println("index:", index, " i:",i) } wg.Done() } var wg sync.WaitGroup func main(){ runtime.GOMAXPROCS(8) for i:=1;i<11;i++{ wg.Add(1) go test_sleep(i) } wg.Wait() } ``` 代码2: 执行一段时间,就像死锁一样 ```go func test_sleep(index int){ for i:=0;i<100;i++{ fmt.Println("index:", index, " i:",i) //添加time.Sleep就出现问题 time.Sleep(5*time.Millisecond) } wg.Done() } var wg sync.WaitGroup func main(){ runtime.GOMAXPROCS(8) for i:=1;i<11;i++{ wg.Add(1) go test_sleep(i) } wg.Wait() } ```
测试过了,go1.8版本没有问题
#1
更多评论
polaris
社区,需要你我一同完善!
我试了没问题,不过版本是 1.8
#2
多谢,我升级到1.8没有这个问题了,估计是1.5的bug
#3

用户登录

没有账号?注册

今日阅读排行

    加载中

一周阅读排行

    加载中