Fragen zum Arbeiten mit Thread

Übrigens, in deiner Thread-Funktion, bevor du das Handle auf NULL setzt, mach da ein CloseHandle drauf. Das tut dem Thread selber nichts, aber Windows hat da an dem Handle ein paar Resourcen dran, die werden dadurch freigegeben.
Das sieht man hier nicht aber das wird bei "pWnd->m_search_thread.SetStatus( THREAD_IDLE );" mit erledigt.

Naja - da werd ich mal noch ein bischen rumbasteln.

M.f.G. Erik
 
"Die endlose Geschichte - Runde #2"

Ich habe, wie erwartet, in meinem Source Fehler gefunden. So hatte ich in einer Funktion ein paar "return's" vergessen und den Rückgabewert von ResumeThread() falsch behandelt - anscheinen ist es in der SDK-Doku ein anderer als in der MFC-Doku (und die MSDN schlägt mir in einem MFC-Pojekt natürlich die Variante der SDK vor - vielen Dank)

Es funktionieren jetzt Pausieren und Beenden - Letzteres aber eingeschränkt.

1. Kann es sein, das man einen Thread "n"-mal pausieren aber dann auch "n"-mal wieder starten muss bevor er weiterläuft ?
2. Muss ich den Thread vorm beenden pausieren oder wie schliesse ich den am besten ? (hab da "GetExitCodeThread(..)" und "ExitThread()" gefunden - bei Anwendung des letzteren geht das ganze Programm zu ^_^° )
3. Kann es sein, das ich, um die Priorität setzten zu können, beim Erstellen dieses "Sicherheits- und Zugriffsattribut" setzen muss ?
M.f.G. Erik
 
Zuletzt bearbeitet:
1) Ja, jeder Thread hat einen internen Suspens-Zähler.
2) Die sauberste Methode, einen Thread zu beenden, ist, ihn einfach aus der ThreadProc rauslaufen lassen. ExitThread beendet den gerade aktiven Thread und TerminateThread ist sowieso ein grosses Pfui.
3) Mit dem Default-Erstellen bekommst du eigentlich vollen Zugriff auf den Thread. Dann müsste das SetThreadPriority auch reibungslos klappen. Prüf doch mal einfach im Taskmanager, ob die Priorität übereinstimmt (in Ansicht->Spalten auswählen... die Spalte Basispriorität aktivieren)
 
Wenn ich die Priorität mithilfe von SetThreadPriority(...) eintelle geht alles super.
Kann es sein, das diese Funktion aber nur die Priorität innerhalb des Programms angibt ?

Ausserdem hab ich den leisen Verdacht, das SetPriorityClass(...) nur für Thread Klassen
zu verwenden ist ? (würde zum Namen passen ^_^°)
Und da ich ja nur einen kleinen, unbedeutenden Thread habe geht das nicht

Auf jeden fall geht jetzt Alles mehr oder weniger - >_____<

M.f.G. Erik
 
SetPriorityClass kenne ich gar nicht :)

SetThreadPriority macht das eigentlich schon global. Wenn du da nicht aufpasst, kannst du den Rest von Windows ziemlich runterdrücken (Tu's lieber nicht :) ).
 
Ich möchte nur dem Benutzer die Möglichkeit geben das umzustellen,
ausserdem sieht es einfach toll aus ^_^°
Wenn dann Windows abkaggd wird er hoffentlich eine logische beziehung herstellen
können und das von alleine meiden. ^__________________^

M.f.G. Erik
 

Neue Beiträge

Zurück