Thread und Standard C++ Code



  • Moin,

    Ich versuch mich gerade an Threads.

    Ich hab jetzt eine ThreadKlasse abgeleitet, und dort entsprechend Run überschrieben.
    Aber sobald ich auf einen teil der STL dann zugreifen will,
    bekomme ich einen Laufzeitfehler...

    int CArchivThread::Run() 
    {
    /*	owner->MessageBox("test THread");
    	::Sleep(200);
    	owner->MessageBox("past sleep");*/
    
    	it = archive.Getdir().begin();//<- hier fliegts...
    	fl.addList(archive.Getfile());
            ....
    }
    

    WIe kann ich das umgehen ?

    Devil



  • Hast du gegen die Multithreaded C-Runtime gelinkt ?

    Gruss
    EB



  • Hm, der fehler war wohl das ich am ende AfxEndThread aufgerufen hatte.
    Jetzt gehts, zuminest der zugriff auf die liste.

    Devil



  • Also, es lag an einem fehlenden Parameter für eine Funktion, die deshalb gecrasht ist.

    Obwohl ich da nen try catch block hatte 😵
    Noch ne frage, wenn Run() durchgearbeitet ist, beendet sich der Thread dann
    automatisch, oder muss ich ihn noch irgendwie zerstören ???

    Devil



  • er beendet sich.
    du musst aber die instanz deiner threadklasse löschen. weiß ja nicht wie du die erstellst.



  • Unix-Tom schrieb:

    er beendet sich.
    du musst aber die instanz deiner threadklasse löschen. weiß ja nicht wie du die erstellst.

    mit

    pat =(CArchivThread*) AfxBeginThread(RUNTIME_CLASS(CArchivThread), NULL,0, CREATE_SUSPENDED);
    

    Erstell ich den Thread. Kann ich den Thread auch in der Threadklasse löschen ?
    Weil ich nicht zwangsweise einen Pointer drauf halten muss.

    Devil


Anmelden zum Antworten