我们用于产品的库之一使用单例来访问它。我很确定它是作为静态实例实现的(它不是开源的)。这适用于单个文档应用程序,但我们的应用程序可能加载了多个文档。我假设对实例的访问是这样写的:
Instance* getInstance() {
static Instance* inst = new Instance();
return inst;
}
在这种情况下,是否有某种方法可以稳健地创建多个实例?我唯一能想到的就是拥有更多的流程并使用某种类型的 IPC 将它们捆绑在一起。我想不出什么比hacky更少的了。
我已经要求供应商实现某种类型的会话令牌,这样我就可以拥有多个并发实例,但它们很大而我们很小。
科里
编辑:
- 该机器是 Windows 机器
- 全局静态基本上是一个大工厂。我想要某种类型的会话令牌,所以我可以轻松地说“释放此会话中的所有资源”(没有办法重新初始化我所知道的全局静态)
我不会尝试一些狡猾的恶作剧来获得我想要的东西,而是用我自己的类来包装整个事情,并为每个 getter 添加一个会话密钥。在内部,我将跟踪已分配的内容,添加我自己的发布方法以返回资源。由于很多原因,这是次优的,但我想不出更好的主意。
感谢大家的反馈。