github.com/qiuhoude/go-web@v0.0.0-20220223060959-ab545e78f20d/prepare/14_concurrent/mutex/main2.go (about)

     1  package main
     2  
     3  import (
     4  	"fmt"
     5  	"sync"
     6  )
     7  
     8  type MyMutex struct {
     9  	count int
    10  	sync.Mutex
    11  }
    12  
    13  /*
    14  A: 不能编译
    15  B: 输出 1, 1
    16  C: 输出 1, 2
    17  D: panic 答案, 居然会出错why?
    18  */
    19  
    20  func main() {
    21  	var mu MyMutex
    22  
    23  	mu.Lock()
    24  	var mu2 = mu
    25  	mu.count++
    26  	mu.Unlock()
    27  
    28  	mu2.Lock()
    29  	mu2.count++
    30  	mu2.Unlock()
    31  	fmt.Println(mu.count, mu2.count)
    32  }