有没有 C++防止 STL 容器被交换的分配器?

发布于 2024-12-07 17:08:24 字数 201 浏览 0 评论 0 原文

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

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

Has anyone seen an allocator that calls mlock(2) to prevent an STL container's contents from being swapped to disk?

There is afaik only one tricky part to writing such an allocator, namely minimizing the number of mlocked pages by clustering allocations to be mlocked. Ergo, one should probably start by modifying some shared memory allocator?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

柳若烟 2024-12-14 17:08:24

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

If I wanted to implement this (which is difficult to imagine, because I find it hard to believe it's the right solution to any problem :^), I'd try to do it by using a boost::pool_allocator (which provides a standard library compatible Allocator from a pool) and then - I forget the details; think it'll involve the RequestedSize template argument to singleton_pool and a user_allocator ? - there will be some way of having that sit on top of a pool which requests bigger chunks of memory by the mechanism of your choice which in your case would be allocation of mlocked pages.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文