小工具知识网

当前位置: 首页 > 行业知识 > Golang-如何优雅的关闭一个Channel?

行业知识

Golang-如何优雅的关闭一个Channel?

2026-11-08 18:59:09 来源:互联网转载

如何优雅的关闭Channel

这部分主要参考���:https://qcrao91.gitbook.io/go/channel/ru-he-you-ya-di-guan-bi-channel

()

直接关闭存在的问题

主要就是上述“向已关闭的Channel收发,会如何?”中所提到的情况:

1、向已关闭的channel中发送数据,会panic

()

2、重复关闭已经关闭的channel,会panic。

3、从已关闭的channel接收数据,收到的是0。

一个比较粗糙的实现

利用从读channel的,会返回bool的性质。

func IsClosed(ch     select {    case     c := make(chan T)    fmt.Println(IsClosed(c)) // false    close(c)    fmt.Println(IsClosed(c)) // true}    rand.Seed(time.Now().UnixNano())    const Max = 100000    const NumSenders = 1000    dataCh := make(chan int, 100)    stopCh := make(chan struct{})    // senders    for i := 0; i 

上一篇:服务器硬盘电源插口怎么插?

下一篇:服务器背景板怎么设置图片?