Algorithm 什么';在池中查找空闲连接的最佳算法是什么?

Algorithm 什么';在池中查找空闲连接的最佳算法是什么?,algorithm,connection-pooling,Algorithm,Connection Pooling,我需要编写一个管理连接池的应用程序。我想知道应该研究哪些算法。这里确实不需要复杂的算法。您只需要两个存储桶,一个用于旧连接,另一个用于免费连接。开始时,所有连接都在自由铲斗中。如果请求连接,则从空闲存储桶中取出一个,并将其放入使用过的存储桶中。如果不再使用,则将其放回空闲桶中。典型的池实现将具有空闲桶堆栈: 当请求连接时,将其从堆栈中弹出 当连接返回到池时,将其推到堆栈上 这有利于重复使用上次使用的连接,这有利于缓存 在给用户提供连接时,您将使用RAII,这样当删除对它的所有引用时,它将自动

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

这里确实不需要复杂的算法。您只需要两个存储桶,一个用于旧连接,另一个用于免费连接。开始时,所有连接都在自由铲斗中。如果请求连接,则从空闲存储桶中取出一个,并将其放入使用过的存储桶中。如果不再使用,则将其放回空闲桶中。

典型的池实现将具有空闲桶堆栈:

  • 当请求连接时,将其从堆栈中弹出
  • 当连接返回到池时,将其推到堆栈上
这有利于重复使用上次使用的连接,这有利于缓存

在给用户提供连接时,您将使用RAII,这样当删除对它的所有引用时,它将自动(并确定地)返回到池中

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

  • 在没有可用连接时请求连接(您可以等待、构建新连接等)
  • 当堆栈中已经有很多连接时返回连接(我们想保留这么多吗?)

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

@ElTato:如果这回答了您的问题,您将接受它作为正确答案(答案左侧的勾号)。谢谢您的回答。然而,我仍然很好奇,人们在什么时候做了什么样的研究,有多少连接到provision/kill,是否存在一些神奇的webapi数字。