Есть ли C ++ распределитель, который предотвращает замену контейнера STL? - PullRequest
4 голосов
/ 01 октября 2011

Кто-нибудь видел распределитель, который вызывает mlock (2) , чтобы предотвратить перенос содержимого контейнера STL на диск?

Существует только одна сложная задача при написании такого распределителя, а именно минимизация количества заблокированных страниц путем кластеризации выделенных блоков.Поэтому, наверное, стоит начать с изменения какого-то распределителя общей памяти?

1 Ответ

4 голосов
/ 01 октября 2011

Если бы я хотел реализовать это (что трудно представить, потому что мне трудно поверить, что это правильное решение любой проблемы: ^), я бы попытался сделать это, используя boost::pool_allocator (который предоставляет стандартную библиотеку, совместимую с Allocator из пула), а затем - я забыл детали; думаете, он будет включать шаблонный аргумент RequestedSize для singleton_pool и user_allocator? - будет какой-то способ разместить его поверх пула, который запрашивает большие куски памяти с помощью механизма по вашему выбору, который в вашем случае будет выделением заблокированных страниц.

...