gpt4 book ai didi

http - 如何将数据返回给 channel 的发送者

转载 作者:数据小太阳 更新时间:2023-10-29 03:16:58 26 4
gpt4 key购买 nike

我是 Golang 新手,我正在尝试实现一个 http 服务器,该服务器使用 channel 同步对超昂贵计算 (SAT) 操作的访问。

所以我会收到这些并发请求,它们会将数据传递到 channel ,然后处理 goroutine 会从 channel 中获取数据并执行昂贵的操作,但完成后,什么是将结果返回给发件人以便发件人可以发送 http 响应的最佳方式?

最佳答案

参见 this answer

Channels 是 Go 中的第一类类型,您可以在请求本身中包含一个“响应” channel 。例如。像这样的东西:

type Request struct {
Input int
RespC chan *Responce
}

type Response struct {
Result int
Err error
}

服务:

for req := range ReqC {
// start go routine or whatever
req.RespC <- &Result{Err: errors.New("not implemented")}
}

请求者:

c := make(chan *Response)
ReqC <- &Request{Input: 42, RespC: c}
res := <-c
// check res.Err, use res.Result

RequestResponse 可以包含您需要的任何字段。如果结构很小(如本示例),请使用 chan Response 而不是 chan *Response(对于 Request 也是如此)。

关于http - 如何将数据返回给 channel 的发送者,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29464686/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com