gpt4 book ai didi

go - 这个 goroutine 会永远泄漏/阻塞吗?

转载 作者:IT王子 更新时间:2023-10-29 02:20:50 25 4
gpt4 key购买 nike

对以下行为感到好奇

func test() error {
ctx, cancel := context.WithCancel(context.Background())
cancel()
doneChan := make(chan bool)
go func() {
// emulate a long running function
time.Sleep(time.Minute)
// never exits?
doneChan <- true
}()
select {
case <- ctx.Done():
return ctx.Err()
case <- doneChan:
return nil
}
}

给定上面的函数,如果 select 语句选择上下文取消,那么试图推送到 doneChan 的 goroutine 是否会永远被阻止?在这种情况下,解决方案是始终使用缓冲 channel 吗?

最佳答案

要结束这个问题...简单的答案是肯定的。

关于go - 这个 goroutine 会永远泄漏/阻塞吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50438950/

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