gpt4 book ai didi

戈朗 : forever channel

转载 作者:IT王子 更新时间:2023-10-29 01:16:38 28 4
gpt4 key购买 nike

有一个问题,这里发生了什么?

forever := make(chan bool)

log.Printf(" [*] Waiting for messages. To exit press CTRL+C")
<-forever

最佳答案

该代码创建一个无缓冲 channel ,并尝试从中接收。

因为没有人在上面发送任何东西,所以它本质上是一个永远阻塞的操作。

这样做的目的是防止 goroutine 结束/返回,很可能是因为有其他 goroutines 同时做一些工作或者他们等待某些事件或传入消息(比如你的日志消息说)。

需要的是,如果没有这个,应用程序可能会退出而不等待其他 goroutines。也就是说,如果 main goroutine 结束,程序也会结束。引自 Spec: Program execution:

Program execution begins by initializing the main package and then invoking the function main. When that function invocation returns, the program exits. It does not wait for other (non-main) goroutines to complete.

查看此答案以了解类似和更多技术:Go project's main goroutine sleep forever?

有关 channel 的介绍,请参阅What are channels used for?

关于戈朗 : forever channel,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47262088/

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