找回密码
 FreeOZ用户注册
查看: 2005|回复: 10
打印 上一主题 下一主题

[论坛技术] 有没有成熟的可重用对象的pool的实现

[复制链接]
跳转到指定楼层
1#
发表于 8-5-2009 17:47:38 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?FreeOZ用户注册

x
今天看了一下boost的pool的实现,发现只是为了提高小对象的频繁分配和释放的效率的。其实在实际操作中另外一个问题也是非常常见的,某种资源的对象的重复利用,比如数据库连接,线程等。有没有应用广泛的这种pool的实现?
回复  

使用道具 举报

2#
发表于 8-5-2009 18:10:07 | 只看该作者
我只知道java有很多db connection pool, 比如c3p0 http://sourceforge.net/projects/c3p0
这里有更多 http://java-source.net/open-source/connection-pools

太通用的估计很少,都是针对某一种资源的
回复  

使用道具 举报

3#
发表于 8-5-2009 18:15:07 | 只看该作者
回复  

使用道具 举报

4#
发表于 8-5-2009 18:19:03 | 只看该作者
Apache common pool.........
there is too much about this kind of opool....object pool....
回复  

使用道具 举报

5#
发表于 8-5-2009 18:21:51 | 只看该作者
原帖由 justinli79 于 8-5-2009 16:47 发表
今天看了一下boost的pool的实现,发现只是为了提高小对象的频繁分配和释放的效率的。其实在实际操作中另外一个问题也是非常常见的,某种资源的对象的重复利用,比如数据库连接,线程等。有没有应用广泛的这种pool的实 ...


严格地说, C++ 管理的是Object Pool, 具体这个Object表达的是db connection还是thread,还是单纯的内存是由这个Object对应的class定义的,所以结合C++的RAII,就能实现管理各种资源的要求。
回复  

使用道具 举报

6#
 楼主| 发表于 8-5-2009 18:35:08 | 只看该作者
原帖由 coredump 于 8-5-2009 15:21 发表


严格地说, C++ 管理的是Object Pool, 具体这个Object表达的是db connection还是thread,还是单纯的内存是由这个Object对应的class定义的,所以结合C++的RAII,就能实现管理各种资源的要求。


是。 我希望有的是一个重用的概念,这个pool实现一个acquire和release方法,我需要用的时候就从pool里面借一个,用完就还回去。这样节省了从新申请resource和释放resource的时间。但是boost的pool解决的不是这种问题。
回复  

使用道具 举报

7#
发表于 8-5-2009 19:17:45 | 只看该作者

回复 #6 justinli79 的帖子

LS说的Apache pool就是满足你这样的需求的, 当然是Java的:
  1. public interface KeyedObjectPool {
  2.     Object borrowObject(Object key);
  3.     void returnObject(Object key, Object borrowed);
  4. }
复制代码
回复  

使用道具 举报

8#
发表于 8-5-2009 19:24:20 | 只看该作者
allocate和release resouce的情况各异,所以比较难有通用的实现

即使有,也需要自己实现申请和释放资源,才能适用通用的框架

很多情况下,pool是作为控制并发数量的方法

mysql5就说没有必要用pool,因为建立连接的开销极小,但是没有pool的话,高并发下连接数可能超出控制
回复  

使用道具 举报

9#
 楼主| 发表于 8-5-2009 20:08:46 | 只看该作者
谢谢啊,不过楼上给的都是java的,我想要个c++的。
回复  

使用道具 举报

10#
发表于 8-5-2009 20:38:13 | 只看该作者

回复 #9 justinli79 的帖子

我给的都是c++的
回复  

使用道具 举报

11#
 楼主| 发表于 11-5-2009 16:35:58 | 只看该作者
原帖由 coredump 于 8-5-2009 17:38 发表
我给的都是c++的


谢谢。 不过你给的不够general, 只能参考一下了。
回复  

使用道具 举报

您需要登录后才可以回帖 登录 | FreeOZ用户注册

本版积分规则

小黑屋|手机版|Archiver|FreeOZ论坛

GMT+11, 9-12-2025 05:54 , Processed in 0.022944 second(s), 27 queries , Gzip On, Redis On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表