Einzelnen Beitrag anzeigen

Benutzerbild von jfheins
jfheins

Registriert seit: 10. Jun 2004
Ort: Garching (TUM)
4.579 Beiträge
 
#21

AW: Multithreading und Globale Funktionen

  Alt 14. Feb 2011, 14:57
Ne, Data gehört zu jedem Thread selber der die Funktion aufruft.
D.h. jeder Thread ruft die Funktion auf mit seinen eigenen privat deklariertden Data mit unterschiedlicher länge. Ich bin mir halt nicht sicher, wenn sich schon ein Thread in der Funktion befindet das Result von einem anderen Thread wieder mit dem Result :=''; wieder zurückgesetzt wird. Oder hat jeder Aufruf sein eigenes Result? Oder ob dadurch das High(Data) auch verbogen wird?
Lokale Variabeln gelten ja für jeden eigenen Aufruf/Thread selber.
Damit (und dass jeder Thread einen eigenen Stack hat) ist doch alles gesagt? Es braucht keine Critical Section, da hier kein Zugriff auf gemeinsame Speicherbereiche erfolgt.
Auch High() wird dir immer das richtige Ergebnis zurückliefern. Wäre auch schlimm wenn nicht

Ok, danke!
Dann werde ich das mal probieren und sehen ob es zu Exceptions kommt.
Mit dem "verbiegen" des High(Data) hatte ich gemeint, wenn der erste Thread z.B. mit Data[len=500] aufruft. Der zweite dann mit Data[len=3000]. Wenn nun auch i beim ersten Thread bis 2999 raufgezählt wird, dann gibt's natürlich Probleme weil der erste ja nur bis 499 geht.
Jeder Thread hat seine eigene Schleifenvariable i. Und auch der Vergleichswert (also das Ergebnis von High()) hat jeder Thread für sich.

Geändert von jfheins (14. Feb 2011 um 15:00 Uhr)
  Mit Zitat antworten Zitat