goroutine死锁问题

xiaoxi2017 · · 1439 次点击
似乎你发现了GO的一个bug。 这样也会报错 complete <- "aaa1" msg := <-complete fmt.Println(msg) complete <- "aaa2" msg = <-complete fmt.Println(msg) 理论分析,不应该出现错误的。 同一个协程,先写再读,不应该报错的。 但是,实际运行,确实报这个错误。 难道channel必须在不同协程之间读写? 但是,channel加上缓冲区,var complete chan string = make(chan string,1),就不报错了。 似乎不带缓冲区的channel只支持不同协程之间读写? 期待高手来解答。
#5
更多评论
因为你没异步 所以你的读和写只能按顺序。
#2