AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

60000 Dateien mit Threads downloaden

Ein Thema von moritz · begonnen am 24. Nov 2004 · letzter Beitrag vom 24. Nov 2004
Antwort Antwort
Seite 1 von 2  1 2      
moritz

Registriert seit: 18. Apr 2003
1.037 Beiträge
 
#1

60000 Dateien mit Threads downloaden

  Alt 24. Nov 2004, 14:36
Servus Leute,

ich muss in einem Programm 60000 Dateien ( legal! ) downloaden. Da das mit einem Thread fürchterlich lange dauert, würde ich dafür gerne eine gewisse Anzahlö an Threads starten, die die datei downloaden und dann einen neuen Thread starten.
Die Seiten sind à la seite.com/download.php?id=* durchnummeriert. Allerdings habe ich keine Ahnung, wie ich das realisieren soll oder wieviele Threads ich starten soll ( 2000 Kbit down, 512MB Ram ).
Habt ihr Tutorials, Ansatzpunkte oder Tipps dafür für mich?

Gruß
"Optimistisch ist diejenige Weltanschauung, die das Sein höher als das Nichts stellt und so die Welt und das Leben als etwas an sich Wertvolles bejaht."
Albert Schweitzer
  Mit Zitat antworten Zitat
Benutzerbild von Meflin
Meflin

Registriert seit: 21. Aug 2003
4.856 Beiträge
 
#2

Re: 60000 Dateien mit Threads downloaden

  Alt 24. Nov 2004, 14:40
wenn dus nur auf diesem systemb brauchst: ich würd einfach ausprobieren ab welcher threadanzahl das multithreading nur blockiert. ich denke so mehr als 500 dürft dein system auch nicht mehr flüssig bearbeiten...
  Mit Zitat antworten Zitat
Nordmende

Registriert seit: 6. Jun 2004
8 Beiträge
 
#3

Re: 60000 Dateien mit Threads downloaden

  Alt 24. Nov 2004, 14:42
Ein Threading Tutorial gibt es hier: www.luckie-online.de. Generell gilt bei Operationen, die hardwareabhängig sind, dass je mehr Threads man startet, es nicht um so schneller geht, da alle Threads auf die gleiche Ressource, die festpaltte, zugreifen müssen. Musst du also ausprobieren und einen Kompromiss finden.

Lösen würde ich das über einen Steuerthread, der die Worker Threads verwaltet. Wie das geht kannst du hier bei diesem Portscanner gucken: http://assarbad.net/de/stuff
  Mit Zitat antworten Zitat
Nordmende

Registriert seit: 6. Jun 2004
8 Beiträge
 
#4

Re: 60000 Dateien mit Threads downloaden

  Alt 24. Nov 2004, 14:45
Zitat von Meflin:
ich denke so mehr als 500 dürft dein system auch nicht mehr flüssig bearbeiten...
Der Flaschenhals ist nicht das System, was die Threads verwaltet, sondern die Festpaltte, wie ich schon geschrieben habe.
  Mit Zitat antworten Zitat
Benutzerbild von Meflin
Meflin

Registriert seit: 21. Aug 2003
4.856 Beiträge
 
#5

Re: 60000 Dateien mit Threads downloaden

  Alt 24. Nov 2004, 14:47
auch der prozessor je schneller der ist desto mehr threads kannst du starten. kommt auch auf die benötigte rechenleistung der threads an!
  Mit Zitat antworten Zitat
Nordmende

Registriert seit: 6. Jun 2004
8 Beiträge
 
#6

Re: 60000 Dateien mit Threads downloaden

  Alt 24. Nov 2004, 14:50
Öhm, also wenn der Prozessor langsamer ist, wie die Festplatte schreiben kann, dann hat er einen C64 Prozessor und eine moderne Festplatte. Der Flaschenhals ist definitiv die Festplatte. Selbst zwei Threads können keinen Sinn machen, wenn jeder von den beiden eine große datei schreiben soll. Die Festpaltte kann immer nur an einer Stelle gleichzeitig schreiben. Desweiteren verwaltet nicht der Prozessor die Threads, sondern das Betriebssystem.
  Mit Zitat antworten Zitat
Benutzerbild von Meflin
Meflin

Registriert seit: 21. Aug 2003
4.856 Beiträge
 
#7

Re: 60000 Dateien mit Threads downloaden

  Alt 24. Nov 2004, 14:52
wer sagt dass er das unbedingt auf der festplatte speichern will? ich denke im ram behalten und am ende speichern reicht voll...
  Mit Zitat antworten Zitat
Brüggendiek

Registriert seit: 13. Dez 2002
Ort: Dortmund
275 Beiträge
 
Delphi 5 Standard
 
#8

Re: 60000 Dateien mit Threads downloaden

  Alt 24. Nov 2004, 15:07
Hallo!

Der Flaschenhals sind weder Prozessor noch Festplatte!

Das erreichbare Tempo hängt ab von:
1. der Geschwindigkeit der Internet-Anbindung und
2. der Leistungsfähigkeit des Servers.

Unter normalen Internet-Verhältnissen (Telefon oder DSL mit max. 3MBit/s) ist nämlich die Leitung das Problem. Zusatzlich kann es bei schnellen Leitungen auch passieren, daß der Server aufgrund weiterer Anfragen von anderen Stellen (der Anbieter hat nur "ein Stück vom Server" gemietet und teilt sich das Gerät mit belastenden Anwendungen) langsamer als die Verbindung ist.

Da das Ganze für beide Übertragungsrichtungen gilt, halte ich das mal allgemein.

Es ergibt keinen Sinn, die Übertragung mehrerer Dateien parallel auszuführen, wenn bereits eine Übertragung die Bandbreite voll beansprucht.
Desweiteren ist es sinnlos, mehrere Übertragungen zu starten, wenn dadurch der Durchsatz einer nicht ausgelasteten Leitung nicht steigt. Dann kann der Partner nämlich nicht mehr verarbeiten (andere Nutzer oder Geschwindigkeitsproblem) und die Aufteilung verursacht nur Verzögerungen für die Verwaltung.

Parallel übertragen ergibt nur dann Sinn, wenn Verbindungen zu mehreren Partnern bestehen und eine Verbindung die Bandbreite der Leitung nicht voll ausnutzen kann.

Gruß

Dietmar Brüggendiek
Dietmar Brüggendiek
Die 6 Probleme des Programmierers: 1. dauert das länger, als man 2. glaubt, 3. geht das nicht so, wie man sich das 4. schlau überlegt hat, und 5. sitzt der Fehler da, wo man ihn 6. zuletzt sucht
  Mit Zitat antworten Zitat
Benutzerbild von Sanchez
Sanchez

Registriert seit: 24. Apr 2003
Ort: Neumarkt Stmk
892 Beiträge
 
Delphi XE6 Enterprise
 
#9

Re: 60000 Dateien mit Threads downloaden

  Alt 24. Nov 2004, 15:18
Einen schönen Ansatzpunkt für die Verwaltung eines Thread-Pools findest du im BDN:
http://bdn.borland.com/article/0,1410,30027,00.html

grüße, daniel
Daniel
Testen ist feige!
  Mit Zitat antworten Zitat
Benutzerbild von nailor
nailor

Registriert seit: 12. Dez 2002
Ort: Karlsruhe
1.989 Beiträge
 
#10

Re: 60000 Dateien mit Threads downloaden

  Alt 24. Nov 2004, 16:05
unter normalen bedingungen bist du am schnellsten dran, wenn du eins auf einmal runterlädst und mit dem download des nächsten kurz vor ende des letzen beginnst, um pausen zu vermeiden. (das ist für den fall, dass die verbindung bremst). wenn der eigene rechner bremst, ist es eigentlich egal, nur wie o.g. pausen verhindern. wenn der andere rechner bremst sind jegliche "umgehungsversuche" nicht unterstützenswert und daher auch o.g. prinzip am sinnvollsten.
Michael N.
http://nailor.devzero.de/code/sharpmath/testing/ --- Tests, Feedback, Anregungen, ... aller Art sehr willkommen!
::: don't try so hard - it'll happen for a reason :::
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:54 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz