![]() |
Thread-Status-Informationen auslesen
Hallo zusammen,
angenommen ich habe in meiner Anwendung 47 Threads laufen. Jeder Thread arbeitet eine Nachrichtenwarteschlange ab (PeekMessage...). Die Nachrichten innerhalb eines Threads können auch unterschied lang sein. Wie kann ich gewisse Informationen über diese 47 Threads auslesen wie zum Beispiel Nachrichtenanzahl in MessageQueue oder Speicherverbrauch des einzelnen Threads usw. (diese Dinge fallen mir grad ein). Würde zum Beispiel gerne folgendes wissen: Thread 1 hat 327 Nachrichten abzuarbeiten und dieser Thread belegt 300k im Speicher. Thread 2 hat 4711 Nachrichten abzuarbeiten und dieser Thread belegt 800k im Speicher. Thread 3 hat 12 Nachrichten abzuarbeiten und dieser Thread belegt 32k im Speicher. usw. Ich hoffe ihr könnt mir da weiter helfen. Viele Grüße Alex |
AW: Thread-Status-Informationen auslesen
Siehst du da links an der Seite eine hilfreiche Funktion oder bei einem der Funktionen einen passenden Link?
Nee, dann hast'e wohl Pech. Und was den Speicher angeht. Der meiste Speicher ist nicht an einen Thread gebunden, also wirst du so oder so selber mitzählen müssen. Das Einzige, was wirklich mit einem Thread verbunden ist, wäre der Stack, wozu es bestimmt passene APIs gibt, um dessen Größe auslesen liese, aber beim Heap gehört alles zur "Anwendung", womit ausschließlich du weißt, bzw. wissen solltest, was zu einem Thread gehört. |
AW: Thread-Status-Informationen auslesen
Zitat:
Wenn jemand gewisse API Funktionen kennt, um die Stack Speichergröße auslesen zu kennen, wäre es hilfreich diese hier zu posten. Danke schonmal und viele Grüße |
AW: Thread-Status-Informationen auslesen
Zitat:
Tipp: Ich konnte da keine API finden, welche sowas ausließt. :wink: OK, vielleicht gibt es noch irgendwo eine undokumentierte/geheime/interne API, aber da kommst du besser, wenn du dein Konzept nochmals überarbeitest. Undokumentiertes kann sich auch schnell mal verändern oder gar verschwinden, so daß man sich nicht unbedingt drauf verlassen sollte. [edit] Ups, ich hatte vorhin den Link vergessen. :lol: ![]() ![]() Und wenn man mehr wissen will, dann einfach weiter oben weitersuchen. ![]() ![]() ... |
AW: Thread-Status-Informationen auslesen
Ok, jetzt weiß ich was du meinst :-D
Ich könnte ja rein theoretisch eine while Schleife mit PeekMessage machen aber als Parameter nicht Remove angeben, sondern nur so zum zählen der Nachrichten innerhalb der Queue. Das gefällt mir aber irgendwie nicht. Dachte es gibt vielleicht irgendeine Informationsquelle für einen Thread, die man auslesen kann. Sowas ähnliches wie "GetProcessMemoryInfo" für die Anwendung... Gruß |
AW: Thread-Status-Informationen auslesen
Nur daß PeekMessage dann immer wieder nur die oberste Message liefern wird. :wink:
Ich glaub deine Schleife wird dann zur Endlosschleife. Hatte auch mal versucht zu zählen, aber ebenfalls nix gefunden. Hat man wohl einfach nicht vorgesehn, daß jemand sowas auslesen wöllte. ![]() count/counting/size/number/... Ob sich so aber was finden läßt... wer weiß ... |
AW: Thread-Status-Informationen auslesen
Gegenfrage: Wozu benötigst du diese Informationen?
|
AW: Thread-Status-Informationen auslesen
Gegenantwort Luckie: Wäre doch ganz schön zu sehen, bei einer großen Anzahl Threads, wer gerade wie viele Nachrichten abarbeiten muss und wie viel Speicher der jeweilige Thread gerade mit seinen ganzen Nachrichten einnimmt. Nur zur Statistik eben...
Gruß Alex |
AW: Thread-Status-Informationen auslesen
OK, ist also für das Programmfunktion nicht zwingend nötig.
Wo kommen die Nachrichten denn her? Eventuell können die Absender mitzählen wie viele Nachrichten sie verschickt haben. Und ich nehme auch mal an, dass du so was wie einen Threadpool hast. Vielleicht könnte man da mitzählen, wie die ankommenden nachrichten auf die Threads verteilt werden. Und den Speicherverbrauch kannman dann durch eine einfache Multiplikation (Anzahl Nachrichten x Speicherverbrauch pro Nachricht) ermitteln. |
AW: Thread-Status-Informationen auslesen
Aktuell passen so in etwa jeweils 10000 Messages rein und PostMessage teilt dir mit, wenn es voll ist.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:33 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz