2009-09-10 7 views
0

Quelle est la meilleure façon d'initialiser et de terminer une application?Quelle est la meilleure façon d'initialiser une application?

  1. La bibliothèque ne doit être initialisée/terminée qu'une seule fois et peut être utilisée par n'importe quel nombre de dll.
  2. Existe-t-il une conception standard pour accomplir ceci?
  3. Cette initialisation doit être la toute première étape.

Est singleton est ce dont j'ai besoin ici. N'importe quel nombre de dll qui sont chargées utilisera la même instance ou une instance distincte? J'utilise une implémentation logger log4cxx. Je veux que ce log4cxx ne soit initialisé qu'une seule fois. Quelqu'un peut-il pointer vers un pseudo-code

+2

Application utilisée * par * dlls? Je pensais que les applications utilisaient des bibliothèques, et non l'inverse. Ou parlez-vous d'une bibliothèque, à utiliser par d'autres bibliothèques? –

+0

Oui par application Je voulais dire ma bibliothèque d'applications – pankajt

Répondre

2

La plupart des applications ont un seul point d'entrée (pour C++ standard, il s'appelle main) où vous pouvez créer des objets qui durent toute la durée de vie de l'application. D'après votre description, il semble que vous écrivez réellement une bibliothèque de service qui est utilisée dans d'autres applications et non dans l'application (au sens conventionnel) elle-même.

La seule chose sûre à faire est de rendre votre service re-initialisable que, il n'y a rien qui peut arrêter une application de charger dynamiquement une dll qui relie à votre bibliothèque, le déchargement explicitement que dll puis re-charger à nouveau .

Pour votre bibliothèque, il n'y a pas de différence observable entre le déchargement intermédiaire dll et la terminaison normale. Pendant le chargement de votre bibliothèque, vous pouvez utiliser des données partagées/globales pour effectuer le suivi des initialisations afin d'effectuer uniquement des étapes d'initialisation coûteuses qui peuvent être partagées une seule fois entre les clients. Peut-être que vous devriez décrire ce que la difficulté avec la réinitialisation de votre bibliothèque pourrait causer?

Questions connexes