Zastanawiam się, jak udostępnić trochę pamięci między różnymi modułami programu - powiedzmy, mam główną aplikację (exe), a następnie jakiś moduł (dll). Obaj łączą się z tą samą biblioteką statyczną. Ta biblioteka statyczna będzie miała jakiegoś menedżera, który zapewnia różne usługi. To, co chciałbym osiągnąć, to udostępnienie tego menedżera między wszystkimi modułami aplikacji i wykonanie tego w sposób przezroczysty podczas inicjowania biblioteki. Pomiędzy procesami mógłbym używać pamięci współdzielonej, ale chcę, aby była ona udostępniana tylko w bieżącym procesie. Czy możesz wymyślić jakiś sposób między platformami, aby to zrobić? Ewentualnie za pomocą bibliotek doładowania, jeśli zapewniają pewne możliwości, aby to zrobić.Udostępnianie pamięci między modułami
Jedyne rozwiązanie, o jakim teraz pomyślę, to korzystanie z biblioteki współdzielonej odpowiedniego systemu operacyjnego, z której wszystkie inne moduły będą łączyły się w czasie wykonywania, i tam zapisano menedżera.
EDIT: Aby wyjaśnić, co tak naprawdę potrzebne:
- muszę dowiedzieć się, czy wspólny menedżer został już utworzony (odpowiedzi poniżej już przewidzianych kilka sposobów, aby to zrobić)
- Pobierz wskaźnik do menedżera, jeśli istnieje, lub Ustaw wskaźnik gdzieś do nowo utworzonego obiektu zarządzania.
Biorąc pod uwagę, że jest to pojedynczy proces, w jaki sposób różni się on od normalnego wzorca singleton? – sdg
Jest to w rzeczywistości singleton, problem polega na tym, jak go wdrożyć, aby był on dzielony między różne biblioteki współdzielone. –
W ramach tego samego procesu każdy moduł może uzyskać dostęp do zewnętrznych zmiennych globalnych bez żadnych ograniczeń. – 9dan