Это вопрос типа XY-Problem. Ваше фактическое требование - сериализация взаимодействий с основным оборудованием, поэтому они не перекрываются. Возможно, именно об этом вы должны прямо и конкретно спрашивать.
Ваш предложил решение иметь DLL, который своего рода OS- широкий одноплодной или что-то в этом роде. На самом деле это то, о чем вы просите; хотя, по-моему, это еще не правильный подход. ОС отвечает за управление временем жизни модулей DLL в каждом процессе. Для этого есть много аспектов, но для одного: большинство экземпляров DLL уже распределяются между каждым процессом (в основном разделы кода, ресурсы и т. Д. - данные, разумеется, не делятся по умолчанию).
Чтобы решить вашу актуальной проблемой, вам придется прибегнуть к методам синхронизации нескольких процессов. В Windows это работает в основном через named kernel objects как мьютексы, семафоры, события и т. Д.Другим подходом было бы использовать IPC, как уже отмечали другие люди в своих соответствующих ответах, что опять-таки потребует от себя какой-то синхронизации.
Возможно, все это уже обработано драйвером устройства этого устройства. Каковы были бы реальные сценарии, в которых перекрывающиеся взаимодействия с базовым оборудованием негативно повлияли бы на приложения, использующие вашу DLL?
Я полагаю, вы хотели использовать шаблон Singleton, но не один экземпляр dll, а имел только один экземпляр определенного объекта. – Rahul
Привет, это может помочь, http://stackoverflow.com/questions/1038111/can-a-singleton-class-inside-a-dll-be-shared-across-processes –
Используйте событие с именем, если событие существует, это не первый случай и не выполняется. – Richard