Go sync.mutex锁什么? 主程序包 进口( “同步” ) B型结构{ 国际收支平衡表32 m*sync.RWMutex } 变量( a=100 b=&b{ 余额:1000, m:&sync.RWMutex{}, } ) func main(){ b、 m.Lock() a-- b、 平衡-- b、 m.解锁() }

Go sync.mutex锁什么? 主程序包 进口( “同步” ) B型结构{ 国际收支平衡表32 m*sync.RWMutex } 变量( a=100 b=&b{ 余额:1000, m:&sync.RWMutex{}, } ) func main(){ b、 m.Lock() a-- b、 平衡-- b、 m.解锁() },go,concurrency,synchronization,locking,mutex,Go,Concurrency,Synchronization,Locking,Mutex,就像上面的例子一样,b.m锁定了什么?就b?b和a?或者锁不锁定对象,而是锁定关键部分 如果b.m锁定关键部分而不是b.*那么将sync.Mutex放入结构中有什么意义呢?aMutex只保证如果某个东西锁定了它,那么在第一次释放锁之前,它不能被其他东西再次锁定。正确使用它取决于您自己,确保在尝试访问希望受锁保护的任何内容之前获得锁,就像您在示例mainMutex中所做的那样。lock锁定互斥对象,而不锁定其他对象。这取决于您是否正确地使用它来同步访问。谢谢,此解释简短明了。

就像上面的例子一样,
b.m
锁定了什么?就b?b和a?或者锁不锁定对象,而是锁定关键部分


如果
b.m
锁定关键部分而不是
b.*
那么将
sync.Mutex
放入结构中有什么意义呢?

a
Mutex
只保证如果某个东西锁定了它,那么在第一次释放锁之前,它不能被其他东西再次锁定。正确使用它取决于您自己,确保在尝试访问希望受锁保护的任何内容之前获得锁,就像您在示例
main

Mutex中所做的那样。lock
锁定互斥对象,而不锁定其他对象。这取决于您是否正确地使用它来同步访问。谢谢,此解释简短明了。