协程在使用中应注意什么,是否会出现对变量循环引用?

2023-05-21 00:01:39 +08:00
 James369

用协程来写异步调用,代码确实好看,不过还是担心驾驭不了。

对于变量的循环引用,分 2 种情况:

  1. 如果几个协程工作在同一个线程中,是否会出现循环引用?
  2. 如果几个协程工作在不同的线程中,是否会出现循环引用?
1145 次点击
所在节点    程序员
3 条回复
Leviathann
2023-05-21 01:02:03 +08:00
循环引用,有什么问题
rust ?
James369
2023-05-21 07:43:52 +08:00
@Leviathann
就是在 swift 中,异步的回调闭包的使用中,如果对象对闭包的强引用 和 闭包中对对象的强引用(此处一般要 weak 进行弱化,不然可能构成循环引用),导致内存无法释放的问题。
但是,如果用了协程来进行调用时,我不确定闭包以什么方式工作,所以不确定是否也存在这样的问题?
neoblackcap
2023-05-21 16:44:17 +08:00
@James369 go 的垃圾回收是 tracing gc ,会 stop the world 然后扫描内存,该类型垃圾回收算法没有环形引用导致无法进行内存回收的问题。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/941613

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX