func (dis *Distributor) flushData(logMsgs []*pbdata.Log) {
log.Debug("flush data start...")
if len(logMsgs) == 0 {
return
}
wg := new(sync.WaitGroup)
for i := 0; i < len(dis.plugins); i++ {
wg.Add(1)
go dis.callPlugin(i, logMsgs, wg)
}
wg.Wait()
log.Infof("flush data ok")
}
func (dis *Distributor) callPlugin(i int, logMsgs []*pbdata.Log, wg *sync.WaitGroup) {
defer wg.Done()
msgs := dis.plugins[i].Filter(logMsgs)
err := dis.plugins[i].Run(msgs)
if err != nil {
log.Warnf("plugin(%s): run error - %s", dis.plugins[i].Name(), err)
}
}
golang中多goroutine的用法
猜你喜欢
转载自blog.csdn.net/wwyl1001/article/details/85839863
今日推荐
周排行