3个协程对对一个变量进行减法操作,为什么不加锁他也不会出现问题呢?像Java的话 不加锁这个变量就可能是随机数了
package main
import (
"fmt"
"sync"
"time"
)
var waitGroup sync.WaitGroup
//var lock sync.Mutex
var tikect int = 100 // 100张票
func sub(i int) {
num := 0
for {
if tikect <= 0 {
break
}
//lock.Lock()
tikect--
num++
//lock.Unlock()
time.Sleep(time.Second)
}
fmt.Printf("协程:%v, 卖出去:%v\n", i, num)
waitGroup.Done()
}
func main() {
waitGroup.Add(3)
go sub(1)
go sub(2)
go sub(3)
waitGroup.Wait()
fmt.Println("票卖完了:", tikect)
}