go 关闭通道来作为退出信号

  • 关闭channel之后,读出的值是false,当一个被关闭的channel中已经发送的数据都被成功接收后,后续的接收操作将不再阻塞,它们会立即返回一个零值。

  • 没关闭之前,<-done会阻塞住。

package main

import (
    "fmt"
    "time"
)

func main() {
    done := make(chan bool)
    go func() {
        for {
            select {
            case <-done:
                fmt.Println("done的值:", <-done)
                return
            default:
                fmt.Println("监控中...")
                time.Sleep(1 * time.Second)
            }
        }
    }()
    time.Sleep(3 * time.Second)
    close(done)
    fmt.Println("程序退出")
}

可以用close(done)来通知其他goroutines

posted @   Everyday_Struggle  阅读(34)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
点击右上角即可分享
微信分享提示
主题色彩