gpt4 book ai didi

go - 在 goroutine 中使用指针接收器

转载 作者:IT王子 更新时间:2023-10-29 01:26:28 24 4
gpt4 key购买 nike

我有一个带有指针接收器的方法,我想知道在这个方法的 goroutine 中使用这个指针接收器是否安全?还是我应该将这个指针接收器作为参数传递?

例如:

func (m *dummyStruct) doSomething {
/* do a bunch of stuff */
go func() {
m.a = x
m.doSomethingElse()
}()
return y
}

我知道将 m 作为参数传递给 goroutine 不会出错,但我想知道这是否非常必要

最佳答案

如果您要修改 m 的状态,则需要互斥锁和谨慎的锁定模式。

除此之外,在大多数情况下,这会增加跨线程边界的上下文切换。

这就是我们拥有 Go 习语的原因:

Do not communicate by sharing memory; instead, share memory by communicating.

https://blog.golang.org/share-memory-by-communicating

关于go - 在 goroutine 中使用指针接收器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39537728/

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