老师好关于数据被冲掉哪里有些疑惑烦请解答
for {
if hasValue {
activeWork = w
} else {
activeWork = nil
}
select {
case n = <-c1:
hasValue = true
case n = <-c2:
hasValue = true
case activeWork <- n:
hasValue = false
}
}
以视频中运行结果07为例,work打印0的时候sleep了,这个时候是不是可以说work阻塞了?main函数中的循环从c1和c2拿值,其实这个保证了两个gennerate没有阻塞,但是这个时候,c1或者c2收到值以后hasValue为true,下次循环的时候activeWork不为nil然后会选择到 activeWork <- n,但是这个时候work在sleep,此时程序是怎样一个状态,为什么1-6就会丢弃调,而不是阻塞在哪里等着work的sleep结束以后再打印呢?麻烦您详细解释下