Проблема шаблона проектирования пула объектов - PullRequest
1 голос
/ 13 июня 2011

Для пулов объектов мы говорим, что всякий раз, когда клиент запрашивает ресурс, мы даем его из пула. Если я извлек один ресурс, изменил его состояние и зарегистрировал его. Что произойдет в следующем запросе, разрешит ли пул клиенту проверить этот ресурс или этот ресурс сейчас недопустим для пула?

Ответы [ 2 ]

1 голос
/ 13 июня 2011

Если объект, выпущенный в пул, станет недействительным для повторного использования, пул будет несколько бессмысленным.Если класс требует инициализации или повторной инициализации, вы можете сделать это в методах пула get () или release ().Если для повторной инициализации требуется гораздо больше, чем простые назначения (например, пул объектов сокетов, которые не должны повторно использоваться в течение 5 минут), то вам, возможно, придется прибегнуть к выделенному потоку диспетчера пулов, который эффективно разбивает пул на парулужи - объекты, доступные для повторного использования, и объекты, ожидающие повторной инициализации.

Rgds, Martin

0 голосов
/ 26 сентября 2012

Или, альтернативно, вы не должны возвращать ресурс обратно в пул, пока ресурс не вернется в исходное состояние.Например, представьте, что у вас есть веб-сервер с потоком слушателя и пулом из 10 рабочих потоков.Поток слушателя принимает входящие http-запросы и отправляет их рабочим потокам для обработки.Рабочие потоки в пуле (не извлечены) находятся в своем «исходном» состоянии, то есть в режиме ожидания, или не обрабатывают запрос.Как только поток слушателя проверяет рабочий поток и дает ему http-запрос, рабочий поток начинает обрабатывать запрос;другими словами, его состояние "работает".После обработки запроса и отправки http-ответа клиенту, он снова «простаивает» и возвращается в пул.Таким образом, все потоки, которые в настоящий момент не извлечены из пула, всегда находятся в своем первоначальном состоянии, «бездействующие».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...