初始化应用程序的最佳方法是什么?

时间:2009-09-10 06:47:08

标签: c++ design-patterns dll oop

初始化和终止应用程序的最佳方法是什么?

  1. 图书馆只需要初始化/终止一次,任何数量的dll都可以使用。
  2. 有没有标准设计来实现这一目标?
  3. 这个初始化必须是第一步。
  4. 单身是我需要的吗?加载的任何数量的dll都将使用相同的实例或单独的实例?

    我正在使用log4cxx记录器实现。我想这个log4cxx应该只初始化一次。任何人都可以指向伪代码

1 个答案:

答案 0 :(得分:2)

大多数应用程序都有一个入口点(对于标准C ++,它称为main),您可以在其中创建持续应用程序生命周期的对象。

从你的描述来看,听起来你实际上正在编写一个服务库,用于其他应用程序,而不是应用程序(在传统意义上)本身。

唯一安全的做法是让您的服务重新初始化,因为没有任何东西可以阻止应用程序动态加载链接到您的库的dll,明确卸载dll然后重新加载它。

对于您的库,中间dll卸载和正常终止之间没有可观察到的差异。

在加载库时,您可以使用共享/全局数据来跟踪初始化,以便您只执行昂贵的初始化步骤,这些步骤可以在客户端之间共享一次。

也许您应该概述重新初始化库会导致的困难?