运行这个代码,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)
<a href="/user/zhaozonglu" title="@zhaozonglu">@zhaozonglu</a> 第一次编译花了3秒,运行3秒,共计6秒,感觉等了很久
程序没有改动,第二次第三次。。。第n次,编译只花了0.*秒,运行3秒,但是人产生了错觉,以为消耗的时间是编译的时间,程序只运行了一瞬间的结束了
#8
更多评论
主机是linux(ubuntu 14.04、ubuntu 16.06都试过)
系统都是386
![捕获.PNG](https://static.studygolang.com/180330/22fdbfabaeddb84a45b13ac1fde2601b.PNG)
#1
```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