Аллокаторы пула встречаются во многих языках программирования и во многих вариациях. Начало многих реализаций можно найти в общей литературе по программированию; некоторые из них приведены ниже. Обратите внимание, что ни одна из них не является полной реализацией пула; большинство из них оставляют некоторые аспекты пула в качестве пользовательского упражнения. Однако в каждом случае, хотя некоторые аспекты отсутствуют, в этих примерах используется одна и та же базовая концепция простого сегрегированного хранилища, описанная в этом документе.
Не может справиться с выделением произвольных чисел объектов (это осталось как упражнение).
Не безвредно.
Страдает от статической проблемы инициализации.
MicroC/OS-II: ядро реального времени, Жан Дж.
Пример схемы Simple Segregated Storage при работе во внутренних системах фактической ОС.
Недостающие аспекты:
Не портативный (хотя это нормально, так как он является частью собственной ОС).
Нельзя обрабатывать выделения произвольных чисел блоков (что тоже нормально, так как эта функция не нужна).
Требуется неинтуитивный пользовательский код для создания и уничтожения пула.
Эффективный C++: Методы программирования производительности, Дов Булка и Дэвид Мэйхью, главы 6 и 7.
Это хороший пример итеративного развития пула солутио.
однако их предпосылка (о том, что механизм распределения, предоставляемый системой, безнадежно неэффективен) несовершенна в каждой системе, которую я тестировал.
Запустите их время в вашей системе, прежде чем принимать их выводы.
Недостающий аспект: Требуется неинтуитивный пользовательский код для создания и уничтожения пула.
Расширенный C++: стили программирования и идиомы, Джеймс О. Коплиен, раздел 3.6.
Есть примеры как статического, так и динамического объединения, но отсутствуют аспекты:
Не безвредно.
Пример статического объединения не является портативным.
Статья Appendix F: Other Implementations раздела Boost.Pool Appendices может быть полезна для разработчиков на c++ и boost.
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.