gpt4 book ai didi

go - sync.mutex 锁定什么?

转载 作者:行者123 更新时间:2023-12-01 22:39:26 25 4
gpt4 key购买 nike

这个问题在这里已经有了答案:





How does a mutex.Lock() know which variables to lock?

(1 个回答)


2年前关闭。




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只保证如果有东西锁定了它,在第一次释放锁之前,它不能被其他东西再次锁定。正确使用它取决于您,方法是确保在尝试访问您想要受锁保护的任何内容之前获得锁,正如您在示例 main 中所做的那样。 .

关于go - sync.mutex 锁定什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61663380/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com