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/