Einzelnen Beitrag anzeigen

Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#7

Re: MultiThreading Bei mir ca. 40x Langsamer bei IntegerBere

  Alt 18. Aug 2006, 17:38
Mehrere Threads machen unter Singleprozessorsystemen wenig Sinn. Die Parallelität ist nämlich nur eine Quasi-Parallelität für den Benutz, da jeder Thread nur eine kurze Zeit die CPU zugewiesen bekommt und das Reih um geht. Eine CPU kann eben nur eine berechnung zur gleichen Zeit ausführen, da geht kein Weg drann vorbei. Will ich also folgendes ausrechnen:
Code:
x := (a+b) * (c-d) / (e+f)
Und teile das bei einer CPU auf drei Threads auf, ist der Gewinn gleich null, weil alle drei Threads trotzdem nacheinander von der CPU bedient werden. Habe ich aber drei oder vier CPUs sieht die Sache schon wieder anderes aus. Lasse ich jeden Thread auf einer CPU laufen habe ich den beabsichtigten Gewinn. Wenn man davon ausgeht, dass die gestellte Aufgabe entsprechend komplex ist und den Overhead für die Verwaltung, sowohl von der Architektur als auch vom Betriebssystem (Die Prozessoren müssen ja irgendwie zusammenarbeiten.), dann nicht mehr ins Gewicht fällt. Dies gilt natürlcih nicht für Hardware zugriffe, wenn drei Thread auf die Festplatte schreiben, ist der Gewinn auch gleich null, weil die festplatte nur einen Schreib- / Lösearm hat und solche Zugriffe also von sich aus schon keine Parallelisierung zu lassen.

Threads benutzt man dewegen nur auf Singleprozessorsystemen, damit die Hauptanwendung noch reagiert und eine Interaktion mit dem Benutzer möglich ist.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat