AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Algorithmen, Datenstrukturen und Klassendesign TObjectList-Einträge auf meherere Threads aufteilen
Thema durchsuchen
Ansicht
Themen-Optionen

TObjectList-Einträge auf meherere Threads aufteilen

Ein Thema von DieDolly · begonnen am 19. Jan 2021 · letzter Beitrag vom 22. Jan 2021
Antwort Antwort
DieDolly

Registriert seit: 22. Jun 2018
2.175 Beiträge
 
#1

AW: TObjectList-Einträge auf meherere Threads aufteilen

  Alt 19. Jan 2021, 12:45
Wofür ist das Execute wichtig? Das ist doch egal. Es geht -nur- um die Aufteilung der ObjectList in mehrere ObjectListen, damit ich daraus Threads befüllen kann.
TFor.Parallel ist gut, aber da fehlen mir ein paar Dinge. Ich muss da drin u.a. eine Zählervariable haben.

Das Execute ist egal und tut nichts zur Sache. Den Code davon ändere ich ohnehin nicht.

Geändert von DieDolly (19. Jan 2021 um 12:54 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.374 Beiträge
 
Delphi 12 Athens
 
#2

AW: TObjectList-Einträge auf meherere Threads aufteilen

  Alt 22. Jan 2021, 10:22
Delphi-Referenz durchsuchenTThreadList

Das ist keine Liste von Threads (TObjectList ist ja eine Liste von Objekten),
sondern es ist eine TList mit eingebauter Threadabsicherung. (also eigentlich eine TThreadsaveList)



Wieso Manuell aufteilen?
Lass die Einträge sich doch einfach dynamisch vereilen. (wer Zeit hat, der macht es)

* alle Aufgaben/Dateien in eine TThreadList
* dann X Threads starten (so viele, wie gewünscht)
* jeder Thread holt sich via ThreadList.Pop einwas raus
* * verarbeitet das
* * und wiederholt dann seine Schleife so oft, bis nichts mehr in der ThreadList drin ist
* dann kann er sich beenden (oder wartet, bis wieder was rein kommt, und arbeitet weiter)

Vorteile
* die ThreadList ist schon thread-sicher (hat die CriticalSection/Monitor bereits einbebaut)
* und wenn nicht alle Aufgaben gleich lange dauern, dann geht es auch schneller
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu (22. Jan 2021 um 10:24 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort


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 12:22 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz