问题标签 [memory-pool]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
102 浏览

c++ - 将内存池分配器耦合到托管已分配实例的各种内存池

有一个无状态内存池分配器类:

背后的逻辑是get_pool()成员函数的特殊化,它旨在返回定义类型的特定内存池,应在其中分配 T 的实例,例如:

在 .cpp 文件中:

最后是 .cpp 文件中的 get_pool() 函数模板的特化:

问题是这样的模板特化仅在.cpp编译单元中可用,并且阻止auto get_pool()在其他编译单元中的使用(auto不能推断占位符的类型,因为get_pool()函数模板特化的主体不可用)

auto因此,我想以某种方式摆脱get_pool().

我面临的问题主要memory_pool是分配器本身不知道的大小。无论如何,memory_pool 也是我的实现,所以我可以进行任何需要的采用(例如,进一步using的声明或其他任何需要)。只是它的骨架:

0 投票
1 回答
39 浏览

boost - 为 `boost::pool<>` 的构造函数设置 `min_alloc_size` 会遇到段错误,而在没有上述参数的情况下它可以正常工作?

为什么此代码片段在为构造函数设置时遇到段错误,而在不设置所述参数的情况下运行良好?min_alloc_sizeboost::pool<>

这是代码片段:

这是输出:

0 投票
1 回答
147 浏览

sockets - C# byte [] 操作 - 我应该使用 ArrayPool 还是 MemoryPool?

我正在编写一个服务器应用程序。它接受数千个传入的套接字连接,每个连接都发送和接收消息。

每次通过套接字接收或发送消息时,我都会分配新的byte[] 缓冲区,然后它们会被垃圾收集:

为了提高性能,我想重用byte[] buffers。我应该使用ArrayPool还是MemoryPool

或者我应该创建一个固定长度的 byte[] 缓冲区的ObjectPool吗?例如,如果我发送和接收的消息从不超过 100 KB,那么我创建一个100 KB byte[] 缓冲区的ObjectPool。每次我需要发送或接收消息时,我都会得到其中一个缓冲区。