Normalerweise eine Variable in einem CPP-Datei Ergebnisse in den Variablen mit global zur Verfügung, wie dies zu sein:Wie implementiert man eine globale Prozessvariable in C++?
.h file:
extern int myGlobal;
void work();
.cpp file:
int myGlobal = 42;
void work(){ myGlobal++; }
Wenn die CPP-Datei in einer statischen Bibliothek platziert wird und mehr als eine gemeinsam genutzte Bibliothek (DLL) oder ausführbare Links gegen die statische Bibliothek, jede hat ihre eigene Kopie von myGlobal
. work() würde seine eigene Version der Variablen ändern.
Meine Frage jetzt: Gibt es eine Möglichkeit, eine prozessweit eindeutige Variable oder Zeiger auf diese Variable zu bekommen? Ähnlich wie der Thread-lokale Speicher wäre für Thread-weite Variablen. Es muss nicht plattformunabhängig sein. Bonuspunkte, wenn es in Win32 funktioniert :)
Frage sagt "prozessweit", nicht mehrere Prozesse. Shared Memory innerhalb desselben Prozesses ist wahrscheinlich ein wenig übertrieben. –
Sie haben Recht. Aber es funktioniert und es ist nicht so schwer zu benutzen. Also warum nicht ? :) –
Vorsicht: boost :: interprocess ist voller Fallen und Fallstricke. Zum Beispiel hat es auf einigen Plattformen eine Tendenz zu beschäftigt - warten in Dingen wie Wartebedingungen. Stellen Sie sicher, dass Sie den Boost-Code lesen, den Sie verwenden. –