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

time.Sleep居然会失效???求原理???

elitah · · 3265 次点击
运行这个代码,https://studygolang.com/articles/8135 居然直接打印call就退出了 到底问题出在哪里??跪求高人告知 跪求高人告知 跪求高人告知 跪求高人告知 ![捕获.PNG](https://static.studygolang.com/180330/d2ddc235c81a2643f3fd7daf08552264.PNG)
第 1 条附言 ·
我没说明白,是func aaa中的sleep失效了
第 2 条附言 ·
抱歉没说明白 按逻辑,新增加goroutine来执行func aaa,主线程执行到select应该阻塞等待chan,然后CPU调度到goroutine,延时3秒,然后往chan写数据,主线程收到数据,打印call 问题就是应该是3秒后打印call,而不是立即打印
第 3 条附言 ·
抱歉了各位。是我搞错了 我不应该使用go run来测试 应该go build -o test test.go 生成二进制来测试完全没问题 ![捕获.PNG](https://static.studygolang.com/180330/bc6d28133e0308bfc4a2f7b4c79340d4.PNG)
```golang func main() { go aaa() for { select { case <-ch: //拿到锁 fmt.Println("call") case <-time.After(5 * time.Second): //超时5s fmt.Println("5 sec call") } } } ```
#2
更多评论
主机是linux(ubuntu 14.04、ubuntu 16.06都试过) 系统都是386 ![捕获.PNG](https://static.studygolang.com/180330/22fdbfabaeddb84a45b13ac1fde2601b.PNG)
#1
抱歉是我没说明白,我知道加for循环不会退出,但是aaa中的time.Sleep失效 按逻辑,新增加goroutine来执行func aaa,主线程执行到select应该阻塞等待chan,然后CPU调度到goroutine,延时3秒,然后往chan写数据,主线程收到数据,打印call 问题就是应该是3秒后打印call,而不是立即打印
#3

用户登录

没有账号?注册

今日阅读排行

    加载中

一周阅读排行

    加载中