在代码中生硬的使用time.Sleep肯定是不合适的,Go语言中可以使用sync.WaitGroup来实现并发任务的同步。
func TestCounter(t *testing.T) {sum := 0var mut sync.Mutexvar wg sync.WaitGroupfor i := 0; i < 5000; i++ {wg.Add(1) // 计数器+1go func() {defer wg.Done() // 计数器-1defer mut.Unlock()mut.Lock()sum++}()}wg.Wait()t.Log(sum)}
