这听起来像是一个很奇怪的问题,但是在我的部门中,我们遇到以下问题:
我们正在开发一个服务器应用程序,该应用程序正在变得越来越大,即使是在考虑将其拆分为不同部分(DLL文件)时,也可以在需要时动态加载,然后再卸载,以便能够处理性能问题。
但是:我们正在使用的函数将输入和输出参数作为STL对象传递,并且正如Stack Overflow答案中所述,这是一个非常糟糕的主意。(该帖子包含一些解决方案和技巧,但看起来并不十分牢固。)
显然,我们可以用标准C ++类型替换输入/输出参数,并从函数内部的那些对象创建STL对象,但这可能会导致性能下降。
是否可以得出结论,如果您正在考虑构建一个可能会增长到一台PC无法再处理的应用程序,您绝对不能将STL用作一项技术吗?
有关此问题的更多背景:该问题
似乎有一些误解:问题如下:
我的应用程序正在使用大量性能(CPU,内存)以完成其工作,我想分拆此工作分解为不同的部分(由于程序已经被拆分为多个功能),从我的应用程序中创建一些DLL并将某些功能放入这些DLL的导出表并不难。这将导致以下情况:
+-----------+-----------+----
| Machine1 | Machine2 | ...
| App_Inst1 | App_Inst2 | ...
| | |
| DLL1.1 | DLL2.1 | ...
| DLL1.2 | DLL2.2 | ...
| DLL1.x | DLL2.x | ...
+-----------+-----------+----
App_Inst1是安装在Machine1上的应用程序的实例,而App_Inst2是安装在Machine2上的同一应用程序的实例。
DLL1.x是安装在Machine1上的DLL,而DLL2.x是安装在Machine2上的DLL。
DLLx.1涵盖了导出的function1。
DLLx.2涵盖了导出的function2。
现在在Machine1上,我想执行function1和function2。我知道这会使Machine1重载,所以我想向App_Inst2发送一条消息,要求该应用程序实例执行function2。
function1和function2的输入/输出参数是STL(C ++标准类型库)对象,通常,我可能希望客户对App_Inst1,App_Inst2,DLLx.y进行更新(但不是全部,客户都可以升级Machine1,但是而不是Machine2,或者仅升级应用程序,而不升级DLL,反之亦然,...)。显然,如果接口(输入/输出参数)发生变化,则将迫使客户进行完全升级。
但是,如所引用的StackOverflow URL中所述,对App_Inst1或DLL中的一个进行简单的重新编译可能会导致整个系统崩溃,因此,我的原始帖子标题不建议使用STL(C ++标准模板)库)用于大型应用程序。
希望借此我清除一些问题/疑问。