1 回答
TA贡献2080条经验 获得超4个赞
您正在后台执行所有处理,但仍在等待它完成。解决办法就是不要等待。最好的解决方案是将所有处理转移到其他地方,你可以调用一个函数在后台运行它,但最简单的解决方案是让它内联go
w.WriteHeader(http.StatusAccepted)
go func() {
// START PRODUCER/CONSUMER
jobs := make(chan *Job, 100) // buffered channel
results := make(chan *Job, 100) // buffered channel
// start consumers
for i := 0; i < 5; i++ { // 5 consumers
wg.Add(1)
go consume(i, jobs, results)
}
// start producing
go produce(jobs, csvFile)
// start processing
wg2.Add(1)
go process(results)
wg.Wait() // wait for all workers to finish processing jobs
close(results)
wg2.Wait() // wait for process to finish
log.Println("===> Done Processing.")
}()
请注意,您省略了 CSV 文件处理,因此您需要确保以这种方式使用是安全的(即,您尚未关闭或删除文件,这将导致在处理程序返回后立即发生这种情况)。defer
- 1 回答
- 0 关注
- 106 浏览
添加回答
举报