[英]Avoid data race worker with golang
我有一个应处理工作的jobWorker,在这个工作人员中,数据库具有读写,日志文件,接收api和一些数据计算的功能。
var mystruct strcut{}
func worker(v) {
Get data from database
...
Update database status
...
useByWorker()
...
Do some computing
...
Receive API
...
Write log file
}
func useByWorker() {
mystruct = {1,2,3}
}
这是我上班的主要功能。
func main() {
var wg sync.WaitGroup
data := [][]string{}
wg.Add(1)
for k,v := range data {
k := k
v := v
go func(k int, v []string) {
fmt.Println(k,v)
worker(v)
wg.Done()
}(k, v)
}
wg.Wait()
}
数据争用问题让日志和我在工作程序中使用的数据混淆了。 任何方法都可以简单地解决数据争用问题而无需锁定(Mutex.Lock)。 我希望工作可以更快地由工人处理。
任何建议或提示将有所帮助。 谢谢。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.