问题描述
我通常使用Javascript编写程序,并且我总是使用async await
来处理一些工作,无论如何从不使用javascript中的worker
,现在我在Go
项目中服务需要一些逻辑来删除Bucket
中的数据,但在删除存储桶中的文件时有一些条件,也许在循环中,我应该做这样的工作:
for _,v := range documents {
// query delete where `doc.id === v.id`
// then
// logic to delete some files in the bucket
}
如果我不并发使用,它可能不如并发快,因此我尝试了以下方法:
type ResultChannel struct {
Link string
Err error
Msg string
}
ch := make(chan ResultChannel)
for _,v := range documents {
go func() {
// query delete where `doc.id === v.id`
if err != nil {
ch<- ResultChannel{Link: v.Link,Err: err,Msg: err.Error()}
}
// logic to delete some files in the bucket
if err != nil {
ch<- ResultChannel{Link: v.Link,Msg: err.Error()}
}
}()
}
使用goroutine和channel的最佳实践是什么?还是有任何例子可以为它提供一些建议?我们可以只在这种情况下使用通道吗?而不使用sync.WaitGroup
我已经搜索并阅读了一些关于此的文章/问题,但是我仍然对此并不太了解,我现在想在此询问我的真实情况,如果这没有任何意义,请告诉我
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)