gpt4 book ai didi

go - golang 中的死锁

转载 作者:数据小太阳 更新时间:2023-10-29 03:46:52 25 4
gpt4 key购买 nike

我知道交换第 15 行和第 17 行不会出错,但是,我不明白为什么不交换会导致死锁

package main

import (
"fmt"

)

func greet(c chan string) {
fmt.Println("Hello " + <-c + "!")
}

func main() {
c := make(chan string)
//line15
c <- "John"
//line17
go greet(c)

}

fatal error :所有 goroutines 都睡着了 - 死锁!

最佳答案

channel c 是无缓冲的。在发送方和接收方都准备就绪之前,无缓冲 channel 上的通信不会继续。

程序死锁是因为当主goroutine执行发送操作时没有接收者准备好。

关于go - golang 中的死锁,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56746563/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com