有疑问加站长微信联系(非本文作者)

有疑问加站长微信联系(非本文作者)
我没说明白,是func aaa中的sleep失效了
抱歉没说明白
按逻辑,新增加goroutine来执行func aaa,主线程执行到select应该阻塞等待chan,然后CPU调度到goroutine,延时3秒,然后往chan写数据,主线程收到数据,打印call
问题就是应该是3秒后打印call,而不是立即打印
抱歉了各位。是我搞错了
我不应该使用go run来测试
应该go build -o test test.go
生成二进制来测试完全没问题
入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889
`单行代码`
主机是linux(ubuntu 14.04、ubuntu 16.06都试过)
系统都是386
抱歉是我没说明白,我知道加for循环不会退出,但是aaa中的time.Sleep失效
按逻辑,新增加goroutine来执行func aaa,主线程执行到select应该阻塞等待chan,然后CPU调度到goroutine,延时3秒,然后往chan写数据,主线程收到数据,打印call
问题就是应该是3秒后打印call,而不是立即打印
你可以试试,看打印出什么
win10 go 1.10.1 正常,延迟3s
你这个代码没问题
我自己也尝试在select前后都加一条打印语句就正常了
直接go run 也没问题呀,等待三秒,打印出call
@zhaozonglu 第一次编译花了3秒,运行3秒,共计6秒,感觉等了很久 程序没有改动,第二次第三次。。。第n次,编译只花了0.*秒,运行3秒,但是人产生了错觉,以为消耗的时间是编译的时间,程序只运行了一瞬间的结束了