采纳答案成功!
向帮助你的同学说点啥吧!感谢那些助人为乐的人
删除屏障的这个例子,感觉插入屏障也可以解决,还是没有理解删除屏障的意义。可以进一步解释一下吗?
好像是因为为了解决标记开销,栈上不会触发插入屏障(因为协程栈非常多,所以经常发送引用改变),当一个对象被堆对象删除引用的时候即使栈上有对象引用了它也不会触发屏障,所以需要删除屏障来保证不会误删。
你说的这个更有道理
为什么混合使用 难道不是 下面这个问题吗 多个协程 同时执行的时候, 其中一个 删除了一个对象 而 GC 已经标记完成了 导致 被删除的对象仍被标记活着的错误情况 所以删除屏障会在对象删除前打上一个标记,告诉GC此对象待删除 而插入屏障 是做不了这块逻辑的 如果我的理解没有问题 请肯定我 如果我的理解有问题,请纠正我 不回复会让我感到疑惑
登录后可查看更多问答,登录/注册
深入Go语言原理+Go重写Redis
522 7
696 5
461 4
455 4
570 4