go的锁是否是可重入的
type Reentrant struct {
sync.Mutex
}
func (receiver *Reentrant) methodA() {
receiver.Lock()
fmt.Println("method A is running")
receiver.methodB()
receiver.Unlock()
}
func (receiver Reentrant) methodB() {
receiver.Lock()
fmt.Println("method B is running")
receiver.Unlock()
}
func TestReentrant(t *testing.T) {
a := new(Reentrant)
a.methodA()
}