golang goroutine 调用函数时传入指针(引用传递),在函数内部有数据读取和修改,不加锁会有什么影响?

type Param struct {
    Id   int
    Name string
    Show bool
}

param := Param{1,"name",true}

go func (param *Param){
    // 对param进行读写操作
}(&param)
阅读 6.9k
3 个回答
新手上路,请多包涵

得看是否有多个Goroutine对param进行读写。
如果是的话,不加锁会出现脏数据

一个gorutine无所谓,2个以上就会出现data race

使用读写锁,或者利用两个gorutine将读写(写还是要顺序执行)分开两个通道操作;
或者单gorutine来进行操作,遇到写操作就顺序执行,读操作并发执行

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题