这是我运行整个工作人员的代码段
for w := 1; w <= *totalworker; w++ {
wg.Add(1)
go worker(w, jobs, results, dir, &wg)
}
这是我的工人
defer wg.Done()
for j := range jobs {
filename := j[0][4] + ".csv"
fmt.Printf("\nWorker %d starting a job\n", id)
//results <- j //to show The result of jobs, unnecessary
fmt.Printf("\nWorker %d Creating %s.csv\n", id, j[0][4])
CreateFile(dir, &filename, j)
fmt.Printf("\nWorker %d Finished creating %s.csv on %s\n", id, j[0][4], *dir)
fmt.Printf("\nWorker %d finished a job\n", id)
}
}
当我在没有 WaitGroup 的情况下运行时,它只会创建我需要的整个文件中的一部分。但它显示了它的过程。它显示worker1做工作,worker2做工作等等......所以直到程序结束它会显示每一个。
否则,使用 waitgroup 它创建我需要的整个文件。但是,它完全合二为一,没有显示进程,显示当我用 WaitGroup 运行它时,它就像......等待整个过程在哪里xD,它刚刚以显示 Worker1 做工作,worker2 做工作等结束。 . 在程序结束时。
我可以用这个 Waitgroup 做些什么,让它显示它的每一个打印件?