BCB 6 - threadsichere STL in Multiprozessorumgebungen



  • Hallo,

    mit Benutzung von Windows 7 habe ich Probleme mit einem alten BCB-Projekt. Die Exception EEFFACE habe ich dank audacias "SystemCppException"-Handler besser interpretieren können. Es ist eine STL-Exception. In dem Projekt wird viel STL verwendet und auf einer Microsoftseite habe ich gelesen, dass "alte" Versionen nicht threadsicher sind und auf Multiprozessorumgebungen gehäuft Probleme bereiten.
    Mit diesem Projekt kann ich nun nicht so einfach auf RAD-Studio wechseln, alleine wegen der ganzen AnsiString/Unicode-Probleme. Ist es möglich eine neuere Version der STL in den C-Builder zu integrieren? Falls ja, ist der Code kompatibel zu der alten STL?
    Hat damit jemand Erfahrung und weiß Rat?

    Danke



  • Soweit ich weiß, ist keine STL Implementation threadsicher, weil das Konzept Threads erst mit C++ 11 Einzug in den Standard gehalten hat. Aufgrund des Alters und der mangelnden Standardkonformität glaube ich nicht, dass es sowas für den BCB6 gibt.
    Verwendest du denn ein MT Umgebung? Oder liegt das Problem möglicherweise irgendwo anders?

    PS:
    Habe mal probiert, einen aktuellen STLport und die Apache stdcxx mit dem BCB6 zu übersetzen, bin aber zu keinem brauchbaren Ergebnis gekommen.



  • DocShoe schrieb:

    Soweit ich weiß, ist keine STL Implementation threadsicher, weil das Konzept Threads erst mit C++ 11 Einzug in den Standard gehalten hat.

    Das denke ich auch.

    Grundsätzlich sind mir aber keine speziellen Probleme von BCB6 Programmen auf Mehrkernprozessoren bekannt. Einige Kunden von uns setzen alte mit dem BCB6 geschriebene Software von uns auf modernen Rechnern ein, ohne das da Probleme auftreten. Die Software macht auch intensiv Gebrauch von Threads und STL-Containern.

    Wahrscheinlich hat das Programm des Fragestellers Probleme mit der Threadsynchronisation, die sich nur bei Mehrkernprozessoren zeigen, weil sie auf Einkernen nie wirklich parallel laufen.

    int02h schrieb:

    Ist es möglich eine neuere Version der STL in den C-Builder zu integrieren?

    Das halte ich für ein ziemlich sinnloses Unterfangen.


Anmelden zum Antworten