我有一个带有指针接收器的方法,我想知道在此方法的goroutine内部使用此指针接收器是否安全?还是应该将此指针接收器作为参数传递?
例如:
func (m *dummyStruct) doSomething {
/* do a bunch of stuff */
go func() {
m.a = x
m.doSomethingElse()
}()
return y
}
我知道通过将m作为参数传递给goroutine不会出错,但是我想知道是否非常必要
最佳答案
如果要修改m
的状态,则需要互斥锁和谨慎的锁定模式。
除此之外,在大多数情况下,这将增加跨线程边界的上下文切换。
这就是为什么我们有Go惯用法的原因:
https://blog.golang.org/share-memory-by-communicating
关于go - 在goroutine中使用指针接收器,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39537728/