Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   TParallel.For() maximale Anzahl Threads ? (https://www.delphipraxis.net/194711-tparallel-maximale-anzahl-threads.html)

LTE5 26. Dez 2017 14:01

TParallel.For() maximale Anzahl Threads ?
 
Gibt es eine Möglichkeit bei Benutzung von TParallel.For eine Obergrenze an zu erstellenden Threads anzugeben?

Zacherl 26. Dez 2017 14:21

AW: TParallel.For() maximale Anzahl Threads ?
 
Zitat:

Zitat von LTE5 (Beitrag 1389670)
Gibt es eine Möglichkeit bei Benutzung von TParallel.For eine Obergrenze an zu erstellenden Threads anzugeben?

Ja, die überladenen Methoden erlauben dir einen eigenen ThreadPool zu übergeben. Bei dem kannst du Min- und MaxThreads vorher entsprechend einstellen.

LTE5 26. Dez 2017 14:24

AW: TParallel.For() maximale Anzahl Threads ?
 
Ich habe leider nur die Starterversion. Wie funktioniert das denn?

Zacherl 26. Dez 2017 15:02

AW: TParallel.For() maximale Anzahl Threads ?
 
Delphi-Quellcode:
P := TThreadPool.Create;
P.SetMinWorkerThreads(2);
P.SetMaxWorkerThreads(4);
TParallel.&For(1, 100,
  procedure(I: Integer)
  begin

  end, P);

LTE5 26. Dez 2017 15:27

AW: TParallel.For() maximale Anzahl Threads ?
 
http://chee-yang.blogspot.lu/2015/12...reading_4.html

Gerade gefunden
Zitat:

By default, MaxWorkerThreads and MinWorkerThreads has these value:

FMinLimitWorkerThreadCount := TThread.ProcessorCount;
FMaxLimitWorkerThreadCount := TThread.ProcessorCount * MaxThreadsPerCPU;
Sollte man diese Werte also besser so lassen?

Zacherl 26. Dez 2017 15:40

AW: TParallel.For() maximale Anzahl Threads ?
 
Zitat:

Zitat von LTE5 (Beitrag 1389675)
Sollte man diese Werte also besser so lassen?

Das kommt ganz darauf an, was du innerhalb der Tasks anstellst.

Hast du CPU-lastige Tasks und willst alle Kerne maximal auslasten, solltest du die Werte so lassen, wie sie sind.
Hast du eher I/O-lastige Tasks, kann es durchaus sinnvoll sein, die maximale Anzahl der Threads deutlich zu erhöhen.

LTE5 26. Dez 2017 15:45

AW: TParallel.For() maximale Anzahl Threads ?
 
Ich habe eine Liste mit Quellpfaden und Zielpfaden. Quelldaten sollen zum Ziel kopiert werden.

Zacherl 26. Dez 2017 16:09

AW: TParallel.For() maximale Anzahl Threads ?
 
Zitat:

Zitat von LTE5 (Beitrag 1389677)
Ich habe eine Liste mit Quellpfaden und Zielpfaden. Quelldaten sollen zum Ziel kopiert werden.

Dann kommt es drauf an, wie die Daten auf logische Laufwerke verteilt sind. Mehrere Dateien vom Laufwerk A nach Laufwerk B würde ich komplett sequenziell abarbeiten. Da bringen dir Threads rein gar nichts.


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:37 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