go并发和锁

it2023-07-19  68

package main import ( "fmt" "runtime" "sync" ) var ( count int32 wg sync.WaitGroup mutex sync.Mutex ) func main() { num := 10 wg.Add(num) for i:=0; i<num;i++{ go incCount(fmt.Sprintf("%s%d", "tom", i)) } wg.Wait() fmt.Println(count) } func incCount(name string) { defer wg.Done() for i := 0; i < 2; i++ { mutex.Lock() fmt.Printf("%s 获得 %d\n",name,count) value := count runtime.Gosched() value++ count = value fmt.Printf("%s 计算后 %d\n",name,count) mutex.Unlock() } }

 

最新回复(0)