- 在应用程序中,我们有大约 30 种重复创建的对象。
- 其中一些寿命长(小时),一些寿命短(毫秒)。
- 对象可以在一个线程中创建并在另一个线程中销毁。
在最小的创建/销毁延迟、低锁争用和合理的内存利用率的意义上,有没有人知道什么是好的池化技术?
附加 1。
1.1。一种类型的对象池/内存分配通常与另一种类型无关(见 1.3 例外)
1.2. 一次只为一种类型(类)执行内存分配,通常一次为几个对象。
1.3. 如果一种类型使用指针聚合另一种类型(出于某种原因),这些类型一起分配在一块连续的内存中。
附加 2。
2.1。众所周知,使用对每种类型进行访问序列化的集合比 new/delete 更糟糕。
2.2. 应用程序用于不同的平台/编译器,不能使用编译器/平台特定的技巧。
附加 3。
很明显,最快(具有最低延迟)的实现应该将对象池组织为星型工厂网络。中央工厂对于其他线程特定的工厂来说是全局的。常规对象提供/回收在特定于线程的工厂中更有效,而中央工厂可用于线程之间的对象平衡。
3.1。在中央工厂和线程特定工厂之间组织通信的最有效方法是什么?