Mutex & gtk(mm) Threads



  • Abend,

    Ich hab so ne Grundlegende Frage zu Glib::Mutex.

    Ich habe in einer Funktion welche xml Dateien bearbeitet einen Mutex Lock
    eingebaut. Libxml2 ist nicht Thread Save.
    Somit ist dann meine Funktion trotzdem Thread save obwohl sie libxml einsetzt.
    So das ist die Theorie.

    Praktisch:
    Wenn ich nun die Funktion Aufrufe ohne das ein Thread vorhanden ist,
    gibt es diesen Fehler:

    GLib-ERROR **: The thread system is not yet initialized.
    aborting...
    zsh: abort (core dumped)  ./xml_test
    

    Der Code welche die Funktion Testet ist wie folgt:

    #include <omp_xml.hpp>
    #include <omp_xml_type.hpp>
    #include <omp_int.hpp>
    #include <utility>
    #include <glibmm.h>
    #include <iostream>
    
    int main(void)
    {
      if(!Glib::thread_supported()) Glib::thread_init();
    
      omp::xml_field area1, area2;
      omp::xml xml_file;
      omp::xml_set *xml_namespace = new omp::xml_set;
    
      area1["db_file"] = Glib::locale_to_utf8("test.sdb");
      area1["db_port"] = static_cast<omp::int8>(40);
      area1["db_zeit"] = 12.4;
    
      area2["user"] = Glib::locale_to_utf8("pvizeli");
      area2["pw"] = Glib::locale_to_utf8("dhdjsel");
      area2["aktive"] = true;
    
      xml_file["sqlite"] = area1;
      xml_file["lastfm"] = area2;
    
      (*xml_namespace)["config"] = xml_file;
    
      omp::write_xml("test.xml", *xml_namespace);
      //omp::xml test = omp::read_xml("test.xml")["config"];
    
      return 0;
    }
    

    Hab ich was falsch verstanden?
    Es müsste ja auch ohne Threads mit Glib::Mutex funktionieren.

    Der Debuger zeigt, dass der Fehler beim Glib::Mutex::Lock lock(mutex_); ist.

    Gg



  • Fehler gefunden.


Anmelden zum Antworten