为什么不使用sync.WaitGroup,sync.Mutex引用类型(例如通道,切片)?

时间:2018-11-17 08:27:54

标签: go concurrency

如果Waitgroups和Mutex总是需要始终通过引用传递,我们是否不能将其设为引用类型(禁止将它们用作按值传递)?我的意思是,有什么用例需要使用按值传递?

1 个答案:

答案 0 :(得分:2)

当您传递任何参数作为值时,该值将被复制。这些自变量的任何修改都将在func中进行。当func退出时,这些更改将消失。

在使用WaitGroupMutex的情况下,您不希望这样做,因为您希望共享状态。如果所有修改都是本地的,则您将无法同步任何内容,因为您将拥有状态不同的许多不同副本。

一个有效的情况可能是您想要复制WaitGroupMutex,但这将是非常隐含的代码,并且另一个开发人员很难理解/维护。