mehrere Threads ... Probleme bei schnelleren PC´s

Zugriff, Engines, Konvertierung. Von ADS über DBF bis zu SQL.

Moderator: Moderatoren

Antworten
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12903
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 44 Mal

mehrere Threads ... Probleme bei schnelleren PC´s

Beitrag von AUGE_OHR »

hi,

wenn man eine ListBox oder ListView mit "vielen" Elementen auffüllen will kann das dauern.
Also habe ich das in Treads unterteilt wobei der 1st Thread nur das bearbeite was man "sehen" kann.

nun brauche ich für das ListView auch noch die Imagelist ... die dauert etwas länger ... also starte ich die zuerst.

Code: Alles auswählen

   IF ::luseOwnIcon = .T.
      oThread1 := Thread():new()
      oThread1:start(  {|| ::MyImageList(::cStartDir,::aData,1,nPageCount) } )
   ENDIF
   //
   // hier die 1st Seite
   // 
   FOR nRow := 0 to MIN(nPageCount-1,::nRowMax-1)
         // hier die 1st Seite 
   NEXT
für den 2nd Teil starte ich nun 2 weitere Threads

Code: Alles auswählen

   IF nMaxItem > nPageCount
      IF ::luseOwnIcon = .T.
         oThread3 := Thread():new()
         oThread3:start(  {|| ::MyImageList(::cStartDir,::aData,1,nMaxItem) } )
      ENDIF

      oThread4 := Thread():new()
      oThread4:start(  {|| ::MoreRows(nPageCount,nMaxItem,nSel) })
   ENDIF
das funktioniert auf einem P4 3GHz HT recht gut, aber schon bei einem CoreDuo (2x2.6 GHz) gibt es Probleme und auf einem AMD mit 6 Kernen geht gar nichts mehr.

es scheint mir so als wenn die 1st Seite "zu schnell" fertig ist und Thread 3 startet obwohl Thread 1 noch am arbeiten ist.

klar könnte ich "warten" bis Thread 1 "fertig" ist ... aber ich ich ja nicht "warten" ...

aber meine Frage ist : wieso ergibt sich bei "schnelleren" PCs das Problem ? müssten nicht alle Zeilen "schneller" werden ?
gruss by OHR
Jimmy
Antworten