小试牛刀
package main
import (
"fmt"
"sync"
"time"
)
type Goods struct {
v map[string]int
m sync.Mutex
}
func (g *Goods) Inc(key string, num int) {
g.m.Lock()
defer g.m.Unlock()
fmt.Printf("开始增加库存数量%d,已加锁\n", num)
g.v[key] += num
fmt.Printf("结束增加库存数量%d,已解锁\n", num)
}
func (g *Goods) Value(key string) int {
g.m.Lock()
defer g.m.Unlock()
fmt.Println("库存值上锁")
return g.v[key]
}
func main() {
mutex := sync.Mutex{}
g := Goods{
v: make(map[string]int),
m: mutex,
}
for i := 1; i < 10; i++ {
go g.Inc("榴莲", i)
}
time.Sleep(1 * time.Second)
fmt.Println(g.Value("榴莲"))
}