(2)物件池

来源:互联网 发布:淘宝电商运营什么意思 编辑:程序博客网 时间:2024/05/01 08:42

 物件池比较简单 ,概念上就是重复使用闲置的无状态元件,避免反复释放/创建,实现也比较简单,就用一个TList就可以了,需要注意的有两个问题:

1、线程同步,Service肯定是多线程的(也有用进程来代替线程的),在存取TList是要用TCriticalSection或别的保护;

2、物件池大小,应该设定一个池大小限制,即池中不需要放太多闲置元件(毕竟是占内存的);物件总的数量(闲置的加忙碌的)也应该有数量限制,否则可能内存不够,当数量已经满时,如果没有闲置的物件就需要等待,直到有物件闲置下来(可以用信号量来处理)。

线程池是同样的方式。

我觉得无论物件池还是线程池都不是为了效率,物件/线程的创建耗费时间比起你的业务函数执行时间应该小得多,使用池是为了保护有限资源不要被耗尽,设定池的大小来控制资源的使用,否则系统会因为资源不足而拒绝服务或崩溃。

原创粉丝点击