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

说说 fanIn 和 fanOut

  •  
  •   newmiao · 2021-09-02 13:02:30 +08:00 · 1241 次点击
    这是一个创建于 1180 天前的主题,其中的信息可能已经有所发展或是发生改变。

    文章目录

    fanIn

    • 协程版

    • 递归版

    • 反射版

    fanOut

    • 同步版

    • 协程异步版

    • 反射版

    今天回顾下常用的两种 channel 应用模式: fanIn 和 fanOut,

    分别对应了,对一组相同类型 chan 的合并和广播。

    fanIn 将全部输入 chan 都聚合到一个 out chan 中,在全部聚合完成后,关闭 out chan.

    详见传送门

    附上压测数据 压测数据

    2 条回复    2021-09-10 19:21:14 +08:00
    Mohanson
        1
    Mohanson  
       2021-09-02 13:24:50 +08:00
    看了第一段代码,一些明显的优化点:
    - 使用 select 不要每个 chan 新起一个 go
    - out chan 带个 1024 缓存
    newmiao
        2
    newmiao  
    OP
       2021-09-10 19:21:14 +08:00
    > 使用 select 不要每个 chan 新起一个 go
    @Mohanson 你说的是哪段代码
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1186 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 32ms · UTC 23:03 · PVG 07:03 · LAX 15:03 · JFK 18:03
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.