gpt4 book ai didi

multithreading - goroutine 池是否像其他语言中的线程池一样有意义?

转载 作者:数据小太阳 更新时间:2023-10-29 03:12:09 24 4
gpt4 key购买 nike

我构建了一个简单的 goroutine 工作池,其中包含一些 chan 用于事件流,它工作得很好。由于 goroutines 的性质,我开始问自己这样做除了限制并发工作人员之外还有什么收获。 gorutines 他们自己没有任何他们在每次执行时重用的状态,因此保留它们是有值(value)的。

所以问题是,启动 goroutines 并重用它们或者总是创建一个新的 goroutines 并限制同时创建/运行的数量是否有意义?

最佳答案

由于 goroutine 是一个执行函数,它可以被认为包含以下资源的集合:

  • 它执行的代码;
  • Go 运行时调度程序为该 goroutine 维护的状态;
  • goroutine 私有(private)的状态。

后者是 goroutine 在本地分配的值(在其堆栈上)和堆上。

代码是共享的;调度器中的状态成本可以忽略不计但是 goroutine 保持的状态可能重新创建的成本很高。

后一点可以作为保留 goroutines 的理由在一个游泳池周围。但另一方面,大多数时候它更简单汇集执行类似任务的 goroutines 资源组重用——而不是 goroutines 本身。

关于multithreading - goroutine 池是否像其他语言中的线程池一样有意义?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48659334/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com