sein, dass Sie denken. Das erste Tparallel ist nur für den spezifischen Fall gedacht. für exemple
dies mit tparallel
TParallel.For(1, Max, procedure (I: Integer)
begin
Do_processor_intensive_work
end);
dies gut zu tun müssen vermieden werden:
TParallel.For(1, Max, procedure (I: Integer)
begin
do_waiting_proc_like_downloading_url
end);
warum? und hier beantworte ich Ihre Frage: weil Tparallel die Anzahl der Threads erstellt, die der Anzahl der Prozessoren (virtuell oder physisch) entsprechen, die auf dem System verfügbar sind. Wenn Sie also 32 Prozessoren haben, werden maximal 32 Threads erstellt. Wenn Sie nur einen Prozessor haben, wird nur ein Thread erstellt. Dies ist auch global für alle app, wenn Sie 2 thread, die tparalell tun, haben Sie nicht mehr als ein thread pro Prozessor
so die Idee behing Tparallel ist, dass Sie nicht über die Zahl kümmern müssen von Thread, wählt das System die optimale Anzahl für Sie.aber wie Sie in meinem Beispiel sehen, wenn Ihre Tparallel ist nicht prozessorintensiv, dann werden Sie wahrscheinlich mehr Thread als die Anzahl der verfügbaren Prozessor und in diesem Fall ich stark suggest zu vermeiden tparallel und stattdessen verwenden TanonymousThread
Sie überschreiben können diese Zahl, indem Sie SetMaxWorkerThreads (das ist standardmäßig die Nummer des Prozessors) tun, aber wenn Sie dies tun müssen, ist ihr Glück, dass Sie überhaupt Tparallel verwenden müssen und stattdessen TanonymousThread
verwenden müssen