是否有一个 C++ 分配器可以防止 STL 容器被交换?

Jef*_*ges 5 c++ posix memory-management stl allocator

有人见过调用mlock(2)来防止 STL 容器的内容被交换到磁盘的分配器吗?

编写这样一个分配器只有一个棘手的部分,即通过对要 mlock 的分配进行集群来最小化 mlocked 页的数量。因此,人们可能应该从修改一些共享内存分配器开始?

tim*_*day 4

如果我想实现这个(这很难想象,因为我发现很难相信它是解决任何问题的正确解决方案:^),我会尝试使用(boost::pool_allocator它提供了一个标准库兼容的分配器)来实现它一个游泳池)然后 - 我忘记了细节;认为它会涉及RequestedSizesingleton_pool和 a 的模板参数user_allocator?- 将有某种方法让它位于池的顶部,通过您选择的机制请求更大的内存块,在您的情况下,这将是分配 mlocked 页面。

  • +1 表示“我发现很难相信这是解决任何问题的正确解决方案” (4认同)
  • @BillyONeal:锁定的页面对于安全信息有好处,对于需要立即响应用户的程序也有好处,尽管在这种情况下 mlockall 是更好的选择。 (2认同)