OBS/Adminhilfe/Threading: Unterschied zwischen den Versionen
(Die Seite wurde neu angelegt: „{{ZugriffOBS}} =Threading= ==Datenstruktur-Auswahl== Wann ist welche Datenstrutkur zu wählen, welche Unterschiede gibt es. '''TxThread''': Ein dauerhaft lauf…“) |
Keine Bearbeitungszusammenfassung |
||
| Zeile 10: | Zeile 10: | ||
Beispiel: Angedocktes Widget, dass beim Wechsel des Datensatzes EINMALIG Daten erhebt und anzeigt. | Beispiel: Angedocktes Widget, dass beim Wechsel des Datensatzes EINMALIG Daten erhebt und anzeigt. | ||
Beispiel: ToDo-Widget, dass sich nur selten aktualisiert (30s). | Beispiel: ToDo-Widget, dass sich nur selten aktualisiert (30s). | ||
'''TxTask (Scheduled)''': Ein Task kann den OBS-internen Taskmanager auch regelmäßig ausgeführt werden (Start mit "Schedule(ms)", Ende mit "Remove"). '''Bitte Beachten:''' Wird der Task über den Scheduler erneut ausgeführt bevor die vorherige Instanz das Ende erreicht hat wird der laufende Task abgebrochen und neu gestartet! Dann bitte einen höheren Interval wählen oder auf einen TxThread umbauen. | |||
'''CallAsync''': Einmalige Ausführung, Fire-and-Forget. Achtung: Parallele Ausführung möglich. | '''CallAsync''': Einmalige Ausführung, Fire-and-Forget. Achtung: Parallele Ausführung möglich. | ||
Version vom 11. Juni 2020, 11:02 Uhr
Dies ist eine zugriffsgeschützte Seite.
- System Überwachung
- DEP deaktivieren
- Darstellung unter Windows 7
- Einwahl auf Windows 2000 Server
- Preislisten
- Datenbank Sicherung
- Customize
- Zentrale
- Support Macro
- Service Debug
- Historienprotokoll (Datenänderung OBS)
- Fernwartungsprobleme
- Startparameter
- Fehler beim Kassenabschluss
- Diverse Informationen
- A ras.pbk
- B Command Line Interpreter
- C File Zilla Benutzer XML erzeugen
- D1 OBS_UPDATE.EXE zum OBS Update Server hochladen
- D2 SUPPORT_MACRO zum OBS Update Server hochladen
- H1 Remote Service Protokoll-Übersicht (Alles)
- H Remote ServiceProtokoll-Übersicht
- I Remote Service Commands
- I1 (Admin) Globaler Hinweis für Updates
- J Liste der OBS Updates
- K Angemeldete Service Firmen
- L Systeminformationen einlesen
- M Kundendaten anzeigen
- M1 Kundendatenbankinformationen anzeigen
- N Kundendaten einlesen
- O Kunden-Update Informationen anzeigen
- P Modul Registrierung OBS
- Q App Verwaltung
- S1 Firmen Statistik Protokolle OBS
- S2 Statistik Notfallkassen
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).
TxTask (Scheduled): Ein Task kann den OBS-internen Taskmanager auch regelmäßig ausgeführt werden (Start mit "Schedule(ms)", Ende mit "Remove"). Bitte Beachten: Wird der Task über den Scheduler erneut ausgeführt bevor die vorherige Instanz das Ende erreicht hat wird der laufende Task abgebrochen und neu gestartet! Dann bitte einen höheren Interval wählen oder auf einen TxThread umbauen.
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