上一页 1 2 3 4 5 6 7 8 9 10 ··· 12 下一页
摘要: 打印的结果 阅读全文
posted @ 2018-09-20 10:45 蟒城贝勒爷 阅读(198) 评论(0) 推荐(0) 编辑
摘要: 执行的结果 阅读全文
posted @ 2018-09-20 10:26 蟒城贝勒爷 阅读(151) 评论(0) 推荐(0) 编辑
摘要: 执行的结果为 阅读全文
posted @ 2018-09-20 09:23 蟒城贝勒爷 阅读(555) 评论(0) 推荐(0) 编辑
摘要: 这段代码执行后不会打印任何东西,因为主协程和子协程的执行几乎是同时的,那么它的打印自然不会被执行。 还有一个重置的例子 阅读全文
posted @ 2018-09-19 17:50 蟒城贝勒爷 阅读(1528) 评论(0) 推荐(0) 编辑
摘要: package main import ( "time" "fmt" ) func main() { <-time.After(2*time.Second) //这个方法表示的是在此等待2秒,并返回一个通道,很常用 fmt.Println("时间到。。。。") time.Sleep(2*time.Second) fmt.Println("时间... 阅读全文
posted @ 2018-09-19 17:19 蟒城贝勒爷 阅读(1706) 评论(0) 推荐(0) 编辑
摘要: 执行的结果为 timer的触发事件本来就是一次性的,来验证一下 如果不是一次性的,那么它应该不断的打印"时间到" 执行结果为 死锁了。。。。确实是一次性的 阅读全文
posted @ 2018-09-19 17:11 蟒城贝勒爷 阅读(123) 评论(0) 推荐(0) 编辑
摘要: var ch1 chan int //ch1是一个正常的channel,不是单向的 var ch2 chan <- float64 //ch2是一个单向的channel,只用于写float64的数据 var ch3 <- chan int //ch3是一个单向的channel,只用于读取int数据 阅读全文
posted @ 2018-09-19 16:32 蟒城贝勒爷 阅读(1199) 评论(0) 推荐(1) 编辑
摘要: 并不是往通道里放多少次数据,就必须取多次少数据的(之前的例子都是放3次取3次,放10次取10次),我们可以做一个操作,当子协程没有新放入的时候,主协程不再去取,这就是关闭通道 执行结果 阅读全文
posted @ 2018-09-19 14:56 蟒城贝勒爷 阅读(572) 评论(0) 推荐(0) 编辑
摘要: 有缓冲通道就是在有能力保留数据的通道,那么通道在满的时候或者通道是空的时候,存数据和取数据就会发生阻塞 执行的结果 在主协程等待的2秒内,子协程完全可以进行3个值的写入,因为循环只有3次,所以才会看到这样的结果,但如果主协程和子协程都循环10次呢 因为是并发的执行,所以在每次执行的结果并不是完全一样 阅读全文
posted @ 2018-09-19 14:38 蟒城贝勒爷 阅读(270) 评论(0) 推荐(0) 编辑
摘要: 无缓冲通道(unbuffered channel)是指在接收前没有能力保存任何值的通道,在之前的例子中使用的都是无缓冲通道,需要注意的是,对于无缓冲通道而言,不管是往通道里写数据还是从通道里读数据,都会造成阻塞,并且通过len或者cap函数,得到的结果都为0,看下面的例子 执行的结果为 对于结果的理 阅读全文
posted @ 2018-09-19 11:40 蟒城贝勒爷 阅读(501) 评论(0) 推荐(0) 编辑
上一页 1 2 3 4 5 6 7 8 9 10 ··· 12 下一页