(2)物件池

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

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

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

线程池是同样的方式。

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

火星牛

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值