老师您好
来源:13-4 使用互斥锁同步协程

慕仰4468487
2020-11-21
在这里输入代码
func add() {
defer wg.Done()
for i := 0; i < 100000; i++ {
//lock.Lock()
total += 1
//lock.Unlock()
}
}
func sub() {
defer wg.Done()
for i := 0; i < 100000; i-- {
//lock.Lock()
total -= 1
//lock.Unlock()
}
}
func main() {
wg.Add(1)
go add()
go sub()
wg.Wait()
fmt.Println(total)
}
我将ws.Add(1)的时候,sub函数如果是i++ 就会报 panic: sync: negative WaitGroup counter 这个错误,查了下也不是太理解。但是当我将sub改成i–就没有问题,这个不是已经违背了Add要和Done数量一致的原则么
写回答
1回答
-
bobby
2020-11-22
package main import "sync" import "fmt" var wg sync.WaitGroup var total int func add() { defer wg.Done() for i := 0; i < 100000; i++ { //lock.Lock() total += 1 //lock.Unlock() } } func sub() { defer wg.Done() for i := 0; i < 100000; i-- { //lock.Lock() total -= 1 //lock.Unlock() } } func main() { wg.Add(1) go add() go sub() wg.Wait() fmt.Println(total) }
这是我这里的运行情况 没有报错啊
042020-11-26
相似问题