[vcl threads] watchdir. wieviele threads kann windows verwalten?
-
http://bcb-tutorial.c-plusplus.net/Thread/artikel7.html
hallo allerseits, fragen zu dem oben verlinkten tutorial.
wieviele threads kann windows eigentlich verwalten, wenn für jedes zu überwachende verzeichnis einen separaten thread erzeugt wird? ist es auch sinnvoll, es so zu machen (ein thread pro verzeichnis)?dankeschön
-
Hallo
Wieviele Threads Windows verträgt solltest du wohl besser im WinAPI-Forum nachfragen, schließlich basieren auch die VCL-Threadklassen auf der WinAPI.
Wenn du in deinem Programm keine sichere Höchstgrenze an Verzeichnissen vorgeben willst, dann solltest du wirklich besser einen Thread für alle Verzeichnisse verwenden.
bis bald
akari
-
halloforum schrieb:
wieviele threads kann windows eigentlich verwalten
http://blogs.msdn.com/oldnewthing/archive/2007/03/01/1775759.aspx
-
audacia schrieb:
...
danke für den link.
http://blogs.msdn.com/oldnewthing/archive/2005/07/29/444912.aspxakari schrieb:
Wenn du in deinem Programm keine sichere Höchstgrenze an Verzeichnissen vorgeben willst, dann solltest du wirklich besser einen Thread für alle Verzeichnisse verwenden.
danke für den hinweis. aber wenn nur ein thread für die überwachung aller verzeichnisse verwendet wird, dann können nicht alle verzeichnisse permanent (gleichzeitig) überwacht und ggf. aktionen durchgeführt werden.
beispiel:
mehrere verzeichnisse werden im selben thread überwacht. es geschieht etwas in einem der verzeichnisse. dies wird abgefangen und eine aktion durchgeführt. während dieser ausführung passiert etwas in einem anderen verzeichnis. diese kann aber nicht abfangen werden, da im moment eine andere aktion durchgeführt wird.oder hab ich da einen denkfehler?
danke
-
Hallo
Dann must du eben die Überwachnung von der Ausführung trennen. Das heißt : Ein Thread führt die Überwachung aus. Falls etwas passiert wird die entsprechende Ausführung in einem neuem extra Thread gestartet.
bis bald
akari
-
ok. ein guter hinweis. daran hab ich noch nicht gedacht. danke!
um mehrere verzeichnisse zu überwachen verwendet man WaitForMultipleObjects oder?
bisher hatte ich eine variante mit WaitForSingleObject, die mir aber nicht gefallen hat, da ich das überwachen nicht mit einem abbruchsignal stoppen konnte. deshalb verwende ich jetzt ReadDirectoryChangesW mit overlapped und GetQueuedCompletionStatus. das abbruchsignal wird dann mit PostQueuedCompletionStatus realisiert.können diese methoden auch genutzt werden, im falle der überwachung von mehreren verzeichnissen in einem einzigen thread. oder muss man in diesem fall zwingend WaitForMultipleObjects verwenden? wie kann das warten in diesem fall abgebrochen werden?
danke nochmals
-
Hallo
Wenn ich nochmal drüber nachdenke ist zumindestens für die Überwachung ein Thread wahrscheinlich sowieso keine gute Lösung. Du solltest lieber im WinAPI-Forum nach Verzeichnis-Hooks schauen. Damit kannst du dich von Windows benachrichtigen lassen wenn in einem ausgewählten Verzeichniss etwas passiert.
bis bald
akari
-
ok. danke. kannst du mich bitte dahin schieben?
sachverhalt:
ich überwache mehrere verzeichnisse. die anzahl der verzeichnisse ist variabel. dazu verwende ich dynamic array. für jedes zu überwachende verzeichniss erzeuge ich zur laufzeit einen thread. die überwachung erfolgt dann mittels ReadDirectoryChangesW mit overlapped und GetQueuedCompletionStatus. das abbruchsignal kommt von PostQueuedCompletionStatus.bei "angemessener" anzahl von verzeichnissen (threads) ist es auch ok so. das problem kommt aber mit wachsender anzahl von verzeichnissen.
hat jemand vielleicht eine idee, wie ich das anders machen könnte?
danke für jeden hinweis.
-
Hallo
Es ist besser wenn du für die Frage nach den Hooks einen neuen Thread im WinAPI erstellst (nachdem du FoSu und FAQ durchgeschaut hast!), mit einer entsprechenden konkreten Frage.
bis bald
akari
-
alles klar. danke