Hallo. Ich schreibe gerade eine Anwendung, in der ich Daten blockweise an ein HID-Gerät sende und für jeden gesendeten Block Statusbytes empfange. Das senden des Blockes und das Empfangen der Statusbytes werden auf unterschiedliche Threads aufgeteilt. Die Dauer der Übertragung ist dabei stark Betriebssystem abhängig: - Win 7 4 Kern Prozessor - 64 Bit :: 20 sec - Vista 2 Kern Prozessor - 32 Bit :: 40 sec - Win 7 2 Kern Prozessor - 32 Bit :: 4 min !!!!! CPU- Auslastung im Task Manager zeigt für den langsamen Download mit 4 min das die Threads nicht optimal auf 2 Kerne aufgeteilt werden. Ein Kern ist ständig auf Volllast der andere wird gar nicht beansprucht. Bei den Download mit 20 sec und 40 sec sind beide Kerne gleichmäßig beansprucht und die CPU- Auslastung steigt nie besonders hoch. Ich habe dafür keine Erklärung. Warum werden die Threads nicht beim Win7 32 Bit System auf alle Kerne aufgeteilt? Eine Parallelisierung findet hier offensichtlich gar nicht statt. Gibt es Erfahrungsberichte für Threadanwendung beim Kommunizieren mit HID Geräten unter Win 7? Danke. Christian
>Ich schreibe gerade eine Anwendung, in der ich Daten blockweise an ein >HID-Gerät sende und für jeden gesendeten Block Statusbytes empfange. Also das kann ja deinen Prozessor nicht wirklich auf 100% auslasten.. auch nicht ein Kern... Als Win7 64 Bit mit i7 habe ich letztens mal ne kleine Primzahlenberechnung durchführen lassen, da hat Win7 die 7 Task ordentlich auf die 8 angezeigten Kerne Verteilt...(einer blieb frei) (mind. 2 Kerne sind davon aber virtuell)
Ich glaube auch weniger daran das es am BS liegt. Viel wahrscheinlicher ist es das dein code nicht sauber arbeitet. z.b. Mutex statt critical section.
Kennt jemand ein gutes Tool um die Threads zu analysieren? Wie kann ich eine evtl. Schwachstelle in der Threadabarbeitung meiner Anwendung feststellen? Christian
Christian schrieb: > Kennt jemand ein gutes Tool um die Threads zu analysieren? > Wie kann ich eine evtl. Schwachstelle in der Threadabarbeitung meiner > Anwendung feststellen? wichtig währe erstmal zu ermitteln wo die zeit vergeht. Beim warten auf einen anderen Thread, oder bei eimem Systemaufruf. Um welche Datenmenge geht es überhaupt? du schreibst nur etwas von byte und blöcken. Wegen ein paar byte würde ich nicht mal über multithread nachdenken. Nicht das sich das Programm ständig selber im weg steht und ohne Threads sogar schneller laufen würde?
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.