![]() |
Aufgaben auf Threads aufteilen?
Ich habe folgendes Problem:
Ich hab mir zum Testen ein kleines Multithread-Programm geschrieben. :coder: Man soll angeben können, wieviele Aufgaben zu erledigen sind, und wieviele Threads gestartet werden sollen. Funktioniert auch fast. Ich habe ein Problem mit der Aufteilung. Mir fällt nicht ein wie ich das lösen soll, dass z.B. 9 Aufgaben auf fünf Thrads verteilt werden sollen. Dividieren kann ich nicht, da sonst immer eine Ganze zahl rauskommt, und 9 kein vielfaches von 5 ist. Es müssten also vier Threads jeweils 2 Aufgaben ausführen, und ein Thread nur eine. Hoffentlich kapiert jetzt noch einer was ich meine :roteyes: |
Re: Aufgaben auf Threads aufteilen?
Hallo josef,
Zitat:
Delphi-Quellcode:
jetzt einfach auf jeden Thread mit AnzAufgabenJeThread die Aufgaben verteilen bis AnzAufgaben = 0 ist.
var
AnzAufgabenJeThread: Integer; begin AnzAufgabenJeThread := AnzAufgaben div AnzThreads; if (AnzAufgaben mod AnzThreads) > 0 then Inc(AnzAufgabenJeThread); end; bye Claus |
Re: Aufgaben auf Threads aufteilen?
Wie genau sind Deine Aufgaben organisiert (command pattern)? Wenn Du ohnehin einen Pool von Aufgaben hast (Stapelspeicher, Stack), könnte ein Thread sich an diesen Pool verwenden (Singelton), um die nächste Aufgabe entgegen zunehmen und gleichzeig vom Stapel entfernen (Pop)...
Vielleicht hilft dir ![]() |
Re: Aufgaben auf Threads aufteilen?
Vielen Dank!
Ihr habt mir beide sehr geholfen :thuimb: Mal schauen wie ich es Mach :) |
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:58 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