Eintrittsinvarianz der STL



  • Hi,

    laut dem was ich bisher so gefunden habe verlangt der Standard nicht, dass eine Implementierung der STL eintrittsinvariant (reentrant) ist aber wie sieht's in der Realität aus?

    mfg
    rean



  • http://en.wikipedia.org/wiki/Reentrant

    Du kannst a) Prozeduren meinen oder b) Mutexe. Da Mutexe nicht in der STL enthalten sind, bleibt nur a) uebrig. Was genau moechtest du da wissen? Deine Frage ist sehr unspezifisch.



  • Sachverhalt:
    Statisch gelinkte Exe die eine statisch gelinkte DLL verwendet. Ich weiß dass das nicht unbedingt toll ist, so ist aber leider die Anforderung.
    Fragen:

    1. Ist es möglich Objekte von STL-Klassen (z.B. std::string) über die Schnittstelle auszutauschen wenn beide die exakt selbe Implementierung verwenden?
      Das größte Problem dürften hier statische Member- oder globale Variablen sein, da diese jeweils in der Exe und der DLL existieren. Ich denke da vor allem an Allokatoren.
    2. Wenn nicht die selbe Version verwendet wird (Beispiel: Exe in VS2005, DLL in 2008) ist ja keine binäre Kompatibilität garantiert. Beispiel: sizeof( std::string /*VS2005*/ ) != sizeof( std::string /*VS2008*/ ). Also muss ich in der Schnittstelle entweder PODs oder eine andere Implementierung verwenden (Eigene Klassen, STLport ist leider keine Option). Kann ich dann trotzdem intern die jeweilige STL-Version verwenden oder kann es auch hier zu Problemen kommen? Ich denke da ebenfalls an Allokatoren.

    thx
    rean


Anmelden zum Antworten