Registriert seit: 19. Mär 2012
Ort: Bochum-Linden
64 Beiträge
Delphi 12 Athens
|
AW: MemoryLeaks mit s := I.ToString
8. Nov 2014, 01:43
Threads sind ein präemptives Multitasking. Fiber ist ein kooperatives Multitasking und läuft in EINEM Thread. Die Umschaltung der Fiber kostet keine Verwaltung (wenige ns) und die einzelnen Fiber müssen auch nicht gegeneinander verriegelt werden. Der gesamte Betriebssystem Overhead ist dadurch weg. Das hat für viele technische Probleme enorme Vorteile.
Ich automatisiere z.B. riesige Prüfstände für Verdichter bis 500kW mit vielen Aggregaten, hunderten von analogen und digitalen IOs, die alle ihre eigene Logik haben, aber trotzdem auf eine Hardware (meist Interbus und viele Schaltschränke) zugreifen. Mit Threads würde das System nur noch sich selber verwalten, und die gegenseitige Verriegelung und gleichzeitige Synchronisierung würde einem Stehhaare bescheren. Mit Fiber oder ähnlichen Techniken kann man die einzelnen Aggregate sehr komfortabel unabhängig voneinander programmieren, und alles ist wahnsinnig schnell. Und es gibt auch keine Deadlocks.
Echte Parallelität (Threads) machen nur dann Sinn, wenn durch den Einsatz mehrerer CPU-Core ein deutlicher Performancegewinn erzielt werden kann. Wenn es aber einen Flaschenhals gibt, (bei mir z.B. die Synchronisation mit der Hardware alle paar ms) ist eine kooperative Parallelität auf einem Core ohne Overhead wesentlich schneller.
Viele nehmen dazu eine SoftSPS, aber diese Art der Programmierung empfinde ich als komplett veraltet und auch sehr umständlich. Das alte Step5 oder auch die S7 habe ich schon vor über 20 Jahren beisete gelegt, und bin froh, mit Pascal sauberen und lesbaren Code für angewandte Prozessautomation zu bauen.
Peter Kaisler Das einzig Komplizierte ist zu begreifen wie einfach es ist.
|