(整篇文章都是故事性互动)
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 的内存分配啦?
是的….回去学习下….