首页   注册   登录
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
The Go Programming Language
http://golang.org/
Go Playground
Go Projects
Revel Web Framework
beego
宝塔
V2EX  ›  Go

Golang 怎么友好的关闭一个 chan?

  •  
  •   KaynW · 32 天前 · 1468 次点击
    这是一个创建于 32 天前的主题,其中的信息可能已经有所发展或是发生改变。

    RT 友好又是怎么定义的呢?(纯小白)

    8 回复  |  直到 2019-10-21 12:15:34 +08:00
        1
    ClericPy   32 天前   ♥ 1
    我还以为你要问怎么用 select + timeout 的情况下优雅停止 goroutine...

    还真没去想过 chan 要我关...
        2
    ClericPy   32 天前
    搜了一把, 还真有优雅关闭 chan 的情况, 长见识了
        3
    wangking   32 天前
    要考虑的情景太多了,看的脑壳疼
        4
    catror   32 天前 via Android   ♥ 2
    1. 只由 sender 来关闭
    2. 一般不考虑关闭,除了一种情况:receiver 必须知道 sender 已经停止发送了
        5
    javapythongo   32 天前
    感觉一般不太需要关闭
        6
    reus   32 天前
    谁发送谁关闭
        7
    kid1412621   32 天前
    我还以为你说的是 4chan
        8
    reus   32 天前   ♥ 1
    如果有多个发送者,就用一个 sync.WaitGroup,每次增加发送者时 Add,发送者结束时 Done,最后在需要关闭的时候 Wait 完再 close。通知发送者结束可以用 context.Context.Done
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   2323 人在线   最高记录 5043   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.3 · 23ms · UTC 14:42 · PVG 22:42 · LAX 06:42 · JFK 09:42
    ♥ Do have faith in what you're doing.