我该如何收集golang协程里面的值

发布于 2022-09-12 04:21:12 字数 642 浏览 41 评论 0

业务场景:

有A,B,C,D,E 五个协程来并行抓取ws数据, 抓取后的结果result 是:int64类型的值,已知ws的数据推送很快.

现在需要按照A,B,C,D,E的五个result, 来汇总做计算,评率为每隔n秒

我自己ugly的伪代码:
A.go

var aresult int64

func AgetResult(){
    for {
        // read ws
        data := ws.read()
        // parse result
        aresult = parse(data)
    }
}

B.go

var bresult int64

func BgetResult(){
        for {
        // read ws
        data := ws.read()
        // parse result
        bresult = parse(data)
    }
}

如此类推, 然后利用ticker每隔n秒,来拿各个全局变量来汇总计算

但是感觉这种逻辑真的很ugly, 所以想问下更好的思路?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

甜尕妞 2022-09-19 04:21:12

golang 里有个东西叫 channel ……

一袭水袖舞倾城 2022-09-19 04:21:12

用 channel.

乖乖 2022-09-19 04:21:12
var result = make(chan int,5)
for i := 0 ; i < 5 ; i ++ {
    go func() {
        val := getResult()
        result <- val
    }
}
var sum = 0 
for val := range result {
    sum += val
}

print(sum)
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文