Одна из библиотек, которые мы используем для нашего продукта, использует для доступа к нему синглтон. Я уверен, что он реализован как статический экземпляр (это не открытый код). Это хорошо работает для одного приложения документа, но в нашем приложении может быть загружено более одного документа. Я предполагаю, что доступ к экземпляру написан примерно так:
Instance* getInstance() {
static Instance* inst = new Instance();
return inst;
}
В таких ситуациях есть ли способ надежно создать больше, чем
один экземпляр? Единственное, о чем я могу думать, - это не просто обрабатывать и использовать какой-то тип IPC, чтобы связать все это вместе. Я не могу придумать ничего менее хакерского.
Я попросил поставщика внедрить некоторый тип токена сеанса, чтобы я мог иметь несколько одновременных экземпляров, но они большие, а мы маленькие.
Cory
Edit:
- машина является Windows-машиной
- глобальная статика - это в основном большая фабрика. Мне нужен какой-то токен сеанса, чтобы я мог легко сказать «освободить все ресурсы из этого сеанса» (нет способа повторно инициализировать известную мне глобальную статику)
Вместо того, чтобы попробовать какие-нибудь хитрые махинации, чтобы получить то, что я хочу, я собираюсь обернуть все это своим собственным классом и добавить ключ сеанса к каждому получателю. Внутренне я буду следить за тем, что было выделено, и добавлю свой собственный метод выпуска для возврата ресурсов. Это неоптимально по многим причинам, но я не могу придумать лучшей идеи.
Спасибо всем за отличную обратную связь.