问题标签 [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.
c++ - 将内存池分配器耦合到托管已分配实例的各种内存池
有一个无状态内存池分配器类:
背后的逻辑是get_pool()
成员函数的特殊化,它旨在返回定义类型的特定内存池,应在其中分配 T 的实例,例如:
在 .cpp 文件中:
最后是 .cpp 文件中的 get_pool() 函数模板的特化:
问题是这样的模板特化仅在.cpp编译单元中可用,并且阻止auto get_pool()
在其他编译单元中的使用(auto
不能推断占位符的类型,因为get_pool()
函数模板特化的主体不可用)
auto
因此,我想以某种方式摆脱get_pool()
.
我面临的问题主要memory_pool
是分配器本身不知道的大小。无论如何,memory_pool 也是我的实现,所以我可以进行任何需要的采用(例如,进一步using
的声明或其他任何需要)。只是它的骨架:
sockets - C# byte [] 操作 - 我应该使用 ArrayPool 还是 MemoryPool?
我正在编写一个服务器应用程序。它接受数千个传入的套接字连接,每个连接都发送和接收消息。
每次通过套接字接收或发送消息时,我都会分配新的byte[] 缓冲区,然后它们会被垃圾收集:
为了提高性能,我想重用byte[] buffers。我应该使用ArrayPool还是MemoryPool?
或者我应该创建一个固定长度的 byte[] 缓冲区的ObjectPool吗?例如,如果我发送和接收的消息从不超过 100 KB,那么我创建一个100 KB byte[] 缓冲区的ObjectPool。每次我需要发送或接收消息时,我都会得到其中一个缓冲区。