什么是在池中找到免费连接的最佳算法?

时间:2010-11-09 09:46:40

标签: algorithm connection-pooling

我需要编写一个管理连接池的应用程序。我想知道应该研究哪些算法。

2 个答案:

答案 0 :(得分:4)

典型的Pool实现将具有 free 存储桶堆栈:

  • 请求连接时,从堆栈中弹出
  • 当连接回到池中时,将其推入堆栈

这有利于重复使用上次使用的连接,这有利于缓存。

在为用户提供连接时,您将使用RAII,以便在删除对它的所有引用时自动(并确定性地)返回池。

现在,由您来决定如何处理事件:

  • 当没有可用连接时请求连接(您可以等待,建立新连接等等)
  • 当堆栈中已有很多连接时,取回连接(我们是否要保留这么多连接?)

这些是您的游泳池的实施细节,应根据您的要求进行调整。

答案 1 :(得分:2)

这里确实没有必要复杂的算法。您只需要两个桶,一个用于二手连接和免费连接。开始时,所有连接都在 free 存储桶中。如果请求了连接,则从 free 存储桶中取一个连接,并将其放入使用的存储桶中。如果不再使用它,则将其放回 free 存储桶中。