Finde alle threads eines Prozesses Prozess-id
Ich versuche zu finden, wenn es eine bessere Weise zu finden, alle thread-ids gehören zu dem aktuellen Prozess. Es sieht aus wie mit CreateToolhelp32Snapshot mit TH32CS_SNAPTHREAD und der Iteration über die threads zu prüfen, ob der thread, Prozess-id ist gleich die aktuelle Prozess-id, ist eine Lösung, aber ich möchte vermeiden, Durchlaufen alle Laufenden threads. Ich möchte nur zur Iteration über die threads gehören zu einem Prozess. Bitte lassen Sie mich wissen, ob es eine API, die ist schnell und einfach. Ich muss es in c++.
Dank,
Abhinay.
- Scheint legit. Siehe blogs.msdn.com/b/oldnewthing/archive/2006/02/23/537856.aspx
- Vorzeitige Optimierung einer Maschine in der Regel nicht mehr als 1000 aktive threads. Könnten Sie TH32CS_SNAPALL, um es selektiv auf th32ProcessID.
- TH32CS_SNAPALL ist wie beschrieben "Umfasst alle Prozesse und threads im system, plus die Menge und Module des Prozesses angegeben, in th32ProcessID" - so wird es nicht helfen.
- Die .Netto Klasse Prozess hat ein Gewinde Eigenschaft, aber es scheint machen Sie einen Schnappschuss von allen Prozessen und threads, die von HKEY_PERFORMANCE_DATA, und gibt dann nur die Daten für den aktuellen Prozess. Wie Sie bemerkt haben, Toolhelp schnappt sich auch ein snapshot von alles (und ist weniger ein Schmerz zu verwenden als performance-Daten). psapi nicht handhaben threads überhaupt. Ich vermute, Sie sind aus Glück heraus. Wenn Sie eine thread-Liste für Ihren eigenen Prozess hinzufügen einer DLL, deren DllMain werden benachrichtigt, wenn threads erstellt werden, oder zerstört.
- So weit ich weiß, existieren zwei weitere Ansätze mit der
Performance Data Helper
(aber Sie brauchen, zu filtern, durch die PID ) oder über dieWin32_Thread
WMI-Klasse Filterung durch dieProcessHandle
Eigentum, sondern die Geschwindigkeit der WMI in diesem Fall ist nicht vergleichbar mit der WinAPI. Also mein Rat ist, halten mit der CreateToolhelp32Snapshot-Funktion. - Überprüfen Sie diese zwei: Thread zu Fuß, das Auflisten der Threads in Windows
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn die "aktuellen Prozess" ist eine, die Sie geschrieben haben, können Sie die Vorteile der Tatsache, dass DllMain Funktionen aufgerufen werden, jedes mal, wenn ein thread Hinzugefügt oder beendet werden, mit Begründungen von DLL_THREAD_ATTACH und DLL_THREAD_DETACH. Es ist einfach, dann halten Sie Ihre eigene Liste.
Nachdem mit CreateToolhelp32Snapshot mit TH32CS_SNAPPROCESS (0x00000002), können Sie bekommen Faden durch die Verwendung Thread32First Funktion.
Beispiel-code ist hier.