zoukankan      html  css  js  c++  java
  • goroutine回收机制

    goroutine用了fork-join模型

    这个模型也就是一种分治的思想

    会把所有的goroutine fork发出去 然后再join收集回来

    收集回来的join过程中使用了channel

    同时一个join点可能是多个goroutine的同步

    fork出去之后在返回之前当前的goroutine是对发出去的goroutine没办法控制的

    虽然我们可以用context来限定超时

    但是因为goroutine的context上下文只关联了reader使用者和receiver接收者 没有对发送者进行关联

    所以如果reading使用者超时 sender没有办法对其进行终止 只能sender终止自己

    这个reading的goroutine就泄漏了

    所以goroutine没有很好的回收机制

    这个问题似乎只能靠重启解决了

    增加个timeout也就是少重启了几次

    参考:

    https://stackoverflow.com/questions/50570961/stop-goroutine-execution-on-timeout?answertab=votes#tab-top

  • 相关阅读:
    hdu 1106 排序(排序)
    hdu 1040 As Easy As A+B(排序)
    hdu 1029 Ignatius and the Princess IV(排序)
    mysql-9索引
    mysql-8 alter命令
    mysql-7事务管理
    mysql-6正则表达式
    http协议
    9-2交互体验
    9-2专项测试下午
  • 原文地址:https://www.cnblogs.com/general10/p/12033388.html
Copyright © 2011-2022 走看看