Forum: Algorithmen, Datenstrukturen und Klassendesign
Delphi
by Der schöne Günther,
5. Apr 2024
Dem würde ich jetzt schon, aber nur begrenzt zustimmen-
Klar ist das ein Aufwand, wenn man z.B. vorher damit zufrieden war, dass die gesamte Anwendung hängt solange sie Daten aus dem Netz zieht und verarbeitet, und jetzt eine Anwendung haben möchte, die immer reagiert und jeden einzelnen ISBN-Eintrag anzeigt, ob er schon abgearbeitet ist.
Aber Code ohne Verzahnung mit Benutzer-Oberfläche...
Forum: Algorithmen, Datenstrukturen und Klassendesign
Delphi
by Der schöne Günther,
5. Apr 2024
Kann man absolut verstehen, würde ich ebenso machen- Performance-Optimierung ganz zum Schluss.
Wer behauptet, Programme zu parallelisieren sei einfach hat es ganz sicher selbst noch nicht verstanden.
Forum: Algorithmen, Datenstrukturen und Klassendesign
Delphi
by Der schöne Günther,
4. Apr 2024
Ich kann Google verstehen, acht ist schon viel. Vom Gefühl her hätte ich den Threadpool auf 4-8 begrenzt. Weiterhin muss es nicht einzig an "zu vielen gleichzeitig" liegen, es könnte genauso gut sein, dass "zu viele Einträge pro Zeit" übertragen wurden.
Die Entscheidung, ab wann der Server sagt "Junge, nimm mal den Fuß vom Gas" liegt allein beim Anbieter (Google). Du könntest in deiner...
Forum: Algorithmen, Datenstrukturen und Klassendesign
Delphi
by Der schöne Günther,
4. Apr 2024
Klar- Das wäre eigentlich genauso, wie du es in deinem ersten Versuch bereits drin hattest: Du erstellst dir erst einmal deinen eigenen TThreadPool und setzt dann dort die Anzahl der Worker-Threads.
In Aufrufe wie TTask.Run(..) oder TTask.Future(..) gibst du als zusätzlichen Parameter dann einfach noch deinen selbst erstellten Threadpool an, die Tasks/Futures laufen dann in diesem Threadpool,...
Forum: Algorithmen, Datenstrukturen und Klassendesign
Delphi
by Der schöne Günther,
4. Apr 2024
Habe ich auch nicht verstanden.
Genau das tust du doch schon in deinem
Dummy_ThreadPool.SetMaxWorkerThreads(Dummy_MaxTasks);
Ist das nicht genau, was du willst?
Nein, das sollte nur zeigen, wie stark sich das eigentliche Abholen vom Server vereinfachen lässt, damit man sich nicht mehr mit Http-Returncodes und sonstwas herumschlagen muss. Anfrage raus, Json zurück, fertig.
Aber...
Forum: Algorithmen, Datenstrukturen und Klassendesign
Delphi
by Der schöne Günther,
4. Apr 2024
PS: Das eigentliche Abholen der Daten lässt sich sehr stark vereinfachen:
Wirf einen TRestClient auf dein Formular
Setze BaseURL auf https://www.googleapis.com
Wirf ein TRestRequest auf dein Formular
Setze Resource auf books/v1/volumes?q=isbn:{ISBN}
Füge einen Param hinzu, setze Kind auf pkURLSEGMENT und Name auf isbn
In deinem Code kannst du dann einfach sagen for var isbn in do...
Forum: Algorithmen, Datenstrukturen und Klassendesign
Delphi
by Der schöne Günther,
4. Apr 2024
Hallo-
Ich habe das jetzt nicht im Detail durchgearbeitet, aber das ist echt wild. Ich verstehe nicht, warum diese exotisschen Dinge wie TThreadPool::QueueWorkItem(..) oder dein selbst erfundenes TSimpleSemaphore notwendig sind.
Macht doch einfach deinen eigenen TThreadPool auf, mache so oft TTask.Run(..) wie du Einträge in der Liste hast und sage am Schluss TTask::WaitForAll(..).