“线程池”是否与Go相关?

时间:2017-02-05 01:36:12

标签: go threadpool

因为在内存要求和Go例程的设置/拆卸成本方面,通常只需很少的开销。即使实现一个线程(go routine)工作池,它是否相关?您何时考虑使用线程池而不是每次请求“生成”一个go例程?

2 个答案:

答案 0 :(得分:2)

在golang中产生并保留大量的goroutine很便宜,但它不是免费的。

另外你应该记住goroutine本身可能非常便宜,但同时可以在goroutine代码中分配大量内存。因此,您可能希望限制并发运行的goroutine的数量。

您可以使用信号量来限制资源。 另一种方法(更常用的是go)是使用带有工作池的执行管道。这种模式在golang blog中有很好的描述。

答案 1 :(得分:1)

是的,它是相关的。 db / sql 使用数据库连接池,因为建立新连接需要时间。