V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
James369
V2EX  ›  程序员

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

  •  
  •   James369 · 2023-05-21 00:01:39 +08:00 · 1136 次点击
    这是一个创建于 564 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

    1. 如果几个协程工作在同一个线程中,是否会出现循环引用?
    2. 如果几个协程工作在不同的线程中,是否会出现循环引用?
    3 条回复    2023-05-21 16:44:17 +08:00
    Leviathann
        1
    Leviathann  
       2023-05-21 01:02:03 +08:00
    循环引用,有什么问题
    rust ?
    James369
        2
    James369  
    OP
       2023-05-21 07:43:52 +08:00
    @Leviathann
    就是在 swift 中,异步的回调闭包的使用中,如果对象对闭包的强引用 和 闭包中对对象的强引用(此处一般要 weak 进行弱化,不然可能构成循环引用),导致内存无法释放的问题。
    但是,如果用了协程来进行调用时,我不确定闭包以什么方式工作,所以不确定是否也存在这样的问题?
    neoblackcap
        3
    neoblackcap  
       2023-05-21 16:44:17 +08:00
    @James369 go 的垃圾回收是 tracing gc ,会 stop the world 然后扫描内存,该类型垃圾回收算法没有环形引用导致无法进行内存回收的问题。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1029 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 19:51 · PVG 03:51 · LAX 11:51 · JFK 14:51
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.