Звонки в синглтон библиотеку - PullRequest
1 голос
/ 28 апреля 2010

У меня есть одноэлементный класс, и я скомпилирую его как библиотеку static (lib) или динамическую (dll).

Гарантируется ли, что вызовы одного и того же файла в машине всегда ссылаются на один и тот же и уникальный экземпляр в обоих случаях?

Edit: Что, если процесс загружает две разные библиотеки и разные функции из этих библиотек, хочет использовать экземпляр класса singleton. Теперь они обращаются к одному и тому же экземпляру, я прав?

Спасибо

Ответы [ 2 ]

5 голосов
/ 28 апреля 2010

Нет, разные процессы не будут использовать синглтон из общей библиотеки. Разные процессы используют разные области памяти, поэтому каждый из них создает свой собственный синглтон.

Вам понадобится какая-то общая память или межпроцессное взаимодействие для обмена данными между процессами.

Если отдельный процесс загружает библиотеки A и B, и обе эти библиотеки используют синглтон из библиотеки C, то они будут использовать один и тот же экземпляр.

2 голосов
/ 28 апреля 2010

Вы не вызываете файлы. Вы загружаете код в свой процесс из файла, код содержит инструкции по инициализации, которые создают ваш синглтон. Таким образом, синглтон уникален внутри вашего процесса, независимо от того, какой другой код внутри процесса его использует. Синглтон не уникален для одного процесса другим, даже если они используют одну и ту же общую библиотеку.

...