Каков наилучший способ инициализации приложения? - PullRequest
0 голосов
/ 10 сентября 2009

Каков наилучший способ инициализации и завершения приложения?

  1. Библиотека должна быть инициализирована / завершена только один раз и может использоваться любым числом библиотек.
  2. Есть ли какой-нибудь стандартный дизайн для этого?
  3. Эта инициализация должна быть самым первым шагом.

Является ли синглтон тем, что мне нужно здесь. Любое количество загруженных библиотек будет использовать тот же экземпляр или отдельный?

Я использую реализацию log4cxx logger. Я хочу, чтобы этот log4cxx должен быть инициализирован только один раз. Кто-нибудь может указать на псевдокод

1 Ответ

2 голосов
/ 10 сентября 2009

Большинство приложений имеют одну точку входа (для стандартного C ++ она называется main), где вы можете создавать объекты, которые сохраняют время жизни приложения.

Из вашего описания звучит так, будто вы на самом деле пишете сервисную библиотеку, которая используется в других приложениях, а не в самом приложении (в общепринятом смысле).

Единственная безопасная вещь, которую нужно сделать, - это сделать вашу службу повторно инициализируемой, поскольку ничто не может помешать приложению динамически загружать dll, который ссылается на вашу библиотеку, явно выгружая этот dll, а затем повторно загружаю снова.

В вашей библиотеке нет заметной разницы между промежуточной dll разгрузкой и обычным завершением.

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

Возможно, вам следует описать, что может вызвать затруднение при повторной инициализации вашей библиотеки?

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