Einzelnen Beitrag anzeigen

generic

Registriert seit: 24. Mär 2004
Ort: bei Hannover
2.416 Beiträge
 
Delphi XE5 Professional
 
#12

AW: Ein Versuch mit Omnithreadlibrary

  Alt 22. Sep 2020, 11:40
Ich schreib das einfach mal anders, was ich meinte.

Danke für die Inspiration *demnächst* Videos über die OTL zu machen. Für ein 10 Minuten Video benötige ich ca. 2-3h Produktionszeit (Recherche, Demo bauen, Aufzeichnen, Schneiden, Hochladen, Verwalten). Das mache ich in meiner Freizeit und die ist knapp - Hunde und Ehefrau usw.. Also anderes gesagt, warte nicht auf das Video, weil das kommt frühestens in 4 Wochen, wenn überhaupt.


Inzwischen bin ich Zuhause und hab Zugriff auf dem Laptop, wo ich die Präsentation mit gemacht habe.
D.h. hier ist der Code zu den Folien.

Knackpunkte an deinem Code:
Das inc(fertig) ist nicht Threadsafe.
Weil das eine mehrteilige Operation ist:
1) Wert lesen
2) erhöhen
3) zurückschreiben

Ein anderer Task kann z.B. auch den Wert lesen, während der andere ihn bereits erhöht, aber noch nicht zurück geschrieben hat.

Siehe AtomicIncrement

Auf Liste.Delete(0), liste.count trifft das natürlich auch zu.

Siehe BlockingCollection

Das nächste Problem ist die Interaktion mit der Oberfläche. Das darf nicht mit anderen Threads gemacht werden.
Hier müsstest du mit den HauptThread synchronisieren.
Angehängte Dateien
Dateityp: 7z demo.7z (82,9 KB, 11x aufgerufen)
  Mit Zitat antworten Zitat