OBS/Adminhilfe/Threading: Unterschied zwischen den Versionen

Aus OBS Wiki
Zur Navigation springen Zur Suche springen
Für diese Seite wurde eine Zugriffsbeschränkung eingerichtet. Falls du diese Nachricht siehst, bist du nicht berechtigt, diese Seite einzusehen.
(Die Seite wurde neu angelegt: „Hi there! :) My name is Lemuel, I'm a student studying Engineering from Asendorf, Germany.<br><br>Feel free to surf to my web blog - [http://septictankbiogreen…“)
 
(Die Seite wurde neu angelegt: „{{ZugriffOBS}} =Threading= ==Datenstruktur-Auswahl== Wann ist welche Datenstrutkur zu wählen, welche Unterschiede gibt es. '''TxThread''': Ein dauerhaft lauf…“)
Zeile 1: Zeile 1:
Hi there! :) My name is Lemuel, I'm a student studying Engineering from Asendorf, Germany.<br><br>Feel free to surf to my web blog - [http://septictankbiogreen.com/produk/toilet-portable-fiberglass/ Master SEO]
{{ZugriffOBS}}
=Threading=
==Datenstruktur-Auswahl==
Wann ist welche Datenstrutkur zu wählen, welche Unterschiede gibt es.
 
'''TxThread''': Ein dauerhaft laufender nebenläufiger Prozess mit kurzer Interval-Zeit.
Beispiel: Thread-Widget, dass alle 2s die nebenläufigen Prozesse auflistet.
 
'''TxTask''': Der Prozess wird einmalig ausgeführt oder hat eine hohe Interval-Zeit.
Beispiel: Angedocktes Widget, dass beim Wechsel des Datensatzes EINMALIG Daten erhebt und anzeigt.
Beispiel: ToDo-Widget, dass sich nur selten aktualisiert (30s).
 
'''CallAsync''': Einmalige Ausführung, Fire-and-Forget. Achtung: Parallele Ausführung möglich.
Beispiel: Das wöchentlich laufende Optimize-Tables innerhalb der Garbage.
 
==TxThread==
* läuft nach der Ausführung (.Start) dauerhaft
* Events für Initialisierung (OnInit), Nebenläufigkeit (OnLoop) und Synchronisation (OnSync)
* Sync wird nur ausgeführt wenn im Loop "CallSync" aufgerufen wird
* Sync wird NACH Loop ausgeführt, NIEMALS parallel, Datenstrukturen können also übergreifend genutzt werden
* Loop wird alle "Interval"-ms ausgeführt
* Loop kann von außen manuell früher aufgerufen werden (.Execute)
 
==TxTask==
* läuft einmalig nach der ausführung (.Execute)
* Abbruch möglich (.Stop), Abbruch kann auf das Ende des Prozesses warten (.Stop(true))
* Nebenläufigkeit und Synchronisation laufen NIEMALS parallel
* Mehrfachaufruf ist möglich, ein erneuter Aufruf beenedet aber zuvor den Vorherigen, somit ist die parallele Ausführung der Nebenläufigkeit ausgeschlossen
* regelmässige ausführung über .Schedule(Interval) möglich (über internen Task-Manager)
* Beenden mit MyFreeAndNil wartet auf das Ende
 
==CallAsync==
* Aufruf über den ThreadPool: GL_oThreadPool.CallAsync(...)
* keine Datenstruktur nötig
* Ausführung kann nicht abgebrochen werden (außer durch Programm-Ende)
* parallele Ausführung ist möglich, am besten auf externen Datenstrukturen verzichten

Version vom 23. April 2020, 07:20 Uhr

Dies ist eine zugriffsgeschützte Seite.


Admin-Hilfe

OBS-Administration / Installation
kundenspezifische Anpassungen
OBS Protokolle
Shop-Administration

Threading

Datenstruktur-Auswahl

Wann ist welche Datenstrutkur zu wählen, welche Unterschiede gibt es.

TxThread: Ein dauerhaft laufender nebenläufiger Prozess mit kurzer Interval-Zeit. Beispiel: Thread-Widget, dass alle 2s die nebenläufigen Prozesse auflistet.

TxTask: Der Prozess wird einmalig ausgeführt oder hat eine hohe Interval-Zeit. Beispiel: Angedocktes Widget, dass beim Wechsel des Datensatzes EINMALIG Daten erhebt und anzeigt. Beispiel: ToDo-Widget, dass sich nur selten aktualisiert (30s).

CallAsync: Einmalige Ausführung, Fire-and-Forget. Achtung: Parallele Ausführung möglich. Beispiel: Das wöchentlich laufende Optimize-Tables innerhalb der Garbage.

TxThread

  • läuft nach der Ausführung (.Start) dauerhaft
  • Events für Initialisierung (OnInit), Nebenläufigkeit (OnLoop) und Synchronisation (OnSync)
  • Sync wird nur ausgeführt wenn im Loop "CallSync" aufgerufen wird
  • Sync wird NACH Loop ausgeführt, NIEMALS parallel, Datenstrukturen können also übergreifend genutzt werden
  • Loop wird alle "Interval"-ms ausgeführt
  • Loop kann von außen manuell früher aufgerufen werden (.Execute)

TxTask

  • läuft einmalig nach der ausführung (.Execute)
  • Abbruch möglich (.Stop), Abbruch kann auf das Ende des Prozesses warten (.Stop(true))
  • Nebenläufigkeit und Synchronisation laufen NIEMALS parallel
  • Mehrfachaufruf ist möglich, ein erneuter Aufruf beenedet aber zuvor den Vorherigen, somit ist die parallele Ausführung der Nebenläufigkeit ausgeschlossen
  • regelmässige ausführung über .Schedule(Interval) möglich (über internen Task-Manager)
  • Beenden mit MyFreeAndNil wartet auf das Ende

CallAsync

  • Aufruf über den ThreadPool: GL_oThreadPool.CallAsync(...)
  • keine Datenstruktur nötig
  • Ausführung kann nicht abgebrochen werden (außer durch Programm-Ende)
  • parallele Ausführung ist möglich, am besten auf externen Datenstrukturen verzichten