avatar

目录
同一 struct 下不同字段并发修改有安全问题吗

(整篇文章都是故事性互动)

golang 中比方说我有个 struct,里面有字段 A、B、C,他们的计算量都比较大,我可以开多个goroutine去并发计算同一个 struct 下的 A、B、C字段吗?

(我,目光呆滞…) 这种时候直接说可以话题怎么继续… (内心OS:好像工作中算 payload 是这样啊…)

答案是可以的!是安全的,因为在 golang 中,不同字段 A、B、C 在内存中的分段存储的,并发修改同一个 struct 中不同字段并不会有什么安全问题。

嗯!好像payload 就是这样做的….

是的,我看了你们的代码了,你们加了锁,因为你们payload 这个 struct 中有很多层,你直接并发计算 A、B、C、没关系,但是假设 B 又是一个 struct,下面有 B1、B2。你并发修改了外层的 B,同时对 B1、B2并发修改,这就不行了。

emmmm,那下一篇故事是不是就该讲字段A、B、C在golang 的内存分配啦?

是的….回去学习下….

文章作者: Viola Tangxl
文章链接: https://violatangxl.github.io/2020/01/16/go-concurrent-modify/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 椰子是只猫
打赏
  • 微信
    微信
  • 支付宝
    支付宝

评论