gpt4 book ai didi

synchronization - Java synchronized() block 的 golang 等价物是什么?

转载 作者:IT老高 更新时间:2023-10-28 13:06:10 31 4
gpt4 key购买 nike

Java 为同步代码的关键部分提供了一种非常方便的习惯用法:

synchronized(someObject) {
// do something really important all by myself with nobody bothering me
}

或者

public synchronized void doSomething() {
// ...
}

什么是 go 等价物?

(快速搜索显示:golang.org/pkg/sync/ - 这似乎(也许我错了)对于一般用途来说有点太低了。)

(我关心这个的例子:我需要通过 channel 向多个监听器发送消息。 channel 为数据提供了一个很好的管道,而无需同步任何东西,但是当添加或删除 channel 时,我需要修改 channel 列表,随时可能发生,必须能够处理并发。)

最佳答案

sync.Mutex是互斥锁,它可以提供类似于 synchronized java 关键字的功能(除了 java 中的锁提供 reentrant 互斥):

synchronized(someObject) {
//
}

相当于:

var l sync.Mutex

l.Lock()
//
l.Unlock()

关于synchronization - Java synchronized() block 的 golang 等价物是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18880575/

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