В информатике пул — это набор ресурсов, которые хранятся в памяти, готовые к использованию, а не память, приобретенная при использовании, или память, освобожденная впоследствии. В этом контексте ресурсы могут относиться к системным ресурсам , таким как дескрипторы файлов , которые являются внешними по отношению к процессу, или внутренним ресурсам, таким как объекты . Клиент пула запрашивает ресурс из пула и выполняет требуемые операции над возвращенным ресурсом. Когда клиент заканчивает использование ресурса, он возвращается в пул, а не освобождается и теряется. [ необходимо разъяснение ]
Объединение ресурсов может предложить значительное увеличение времени отклика в ситуациях, когда затраты на получение ресурсов высоки, высокая скорость запросов на ресурсы и низкое общее количество одновременно используемых ресурсов. Объединение также полезно, когда задержка вызывает беспокойство, поскольку пул предлагает предсказуемое время, необходимое для получения ресурсов, поскольку они уже получены. Эти преимущества в основном справедливы для системных ресурсов, требующих системного вызова , или удаленных ресурсов, требующих сетевого взаимодействия, таких как соединения с базой данных , соединения сокетов , потоки и выделение памяти . Объединение также полезно для дорогостоящих для вычисления данных, особенно больших графических объектов, таких как шрифты или растровые изображения , действуя по сути как кэш данных или метод мемоизации .
Частными случаями пулов являются пулы соединений , пулы потоков и пулы памяти .
Пулы также могут использоваться для объектов, в этом контексте пул относится к шаблону проектирования для реализации пулов в объектно-ориентированных языках , например, в шаблоне пула объектов . Сами объекты не содержат внешних ресурсов и только занимают память, хотя уже созданный объект избегает выделения памяти, необходимой при создании объекта. Пулы объектов полезны, когда стоимость создания объекта высока, но в определенных ситуациях это простое объединение объектов может быть неэффективным и фактически может снизить производительность. [1]