我目前正在学习go教程的教程,并进入了频道部分,当我做一些测试时,我发现了一个奇怪的行为,我正在努力理解
以下代码生成死锁错误
package main
import "fmt"
func main() {
c := make(chan string)
c <- "test"
fmt.Printf("%v", <- c)
}
但执行以下操作之一可修复代码
使用缓冲通道:
package main
import "fmt"
func main() {
c := make(chan string, 1)
c <- "test"
fmt.Printf("%v", <- c)
}
或将值设置为其他线程上的通道
package main
import "fmt"
func main() {
c := make(chan string)
go func(){c <- "test"}()
fmt.Printf("%v", <- c)
}
第一个版本的代码产生死锁的根本原因是什么?
qq_遁去的一_1
ITMISS
子衿沉夜
随时随地看视频慕课网APP
相关分类