【发布时间】:2020-05-07 16:53:02
【问题描述】:
package main
import (
"sync"
)
type B struct {
balance int32
m *sync.RWMutex
}
var (
a = 100
b = &B {
balance:1000,
m:&sync.RWMutex{},
}
)
func main() {
b.m.Lock()
a--
b.balance--
b.m.Unlock()
}
就像上面的例子一样,b.m 锁定了什么?只是b?乙和甲?还是锁不锁定对象而是锁定关键部分?
如果b.m 锁定临界区而不是b.*,那么将sync.Mutex 放入结构有什么意义?
【问题讨论】:
-
Mutex.Lock锁定互斥体,仅此而已。您可以正确使用它来同步访问。
标签: go concurrency synchronization locking mutex