AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Algorithmen, Datenstrukturen und Klassendesign Echtzeitanwendung - Welche Struktur beim Dateizugriff?
Thema durchsuchen
Ansicht
Themen-Optionen

Echtzeitanwendung - Welche Struktur beim Dateizugriff?

Ein Thema von Matze · begonnen am 6. Nov 2010 · letzter Beitrag vom 6. Nov 2010
Antwort Antwort
Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.929 Beiträge
 
Turbo Delphi für Win32
 
#1

AW: Echtzeitanwendung - Welche Struktur beim Dateizugriff?

  Alt 6. Nov 2010, 13:07
Hallo,

mehrere Threads bringen in meinem Falle nichts. Bei einer Single-Core-CPU wird ja alles nacheinander ausgeführt, d.h. ich habe mir Funktionen geschrieben, die in einer For-Schleife meine Sensoren durchgehen und diverse Dinge berechnen etc.

Das funktioniert soweit auch alles.

Nur das Speichern bereitet mir zur zeit Probleme. Daher dachte ich daran, dieses Teil in einen separaten Thread auszulagern.

Das ganze ich deutlich komplexer als ich es bisher dergestellt habe. Ich bekomme übers Netzwerk Daten wie z.B. ein Boolsches Array. Index 0 enspricht Sensor 1, ...
Und das Array kann ich innerhalb einer einzigen For-Schleife sehr leicht verarbeiten (Schleifen-Index = Array-Index). Daher möchte ich die Erfassung und Auswertung in einer einzigen Schleife machen.
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#2

AW: Echtzeitanwendung - Welche Struktur beim Dateizugriff?

  Alt 6. Nov 2010, 13:32
trotz Single-CPU würde ich pro Empfangskanal auch einen Thread erzeugen.

Die meisten Threads werden ja eh schlafen, aber so braucht keiner der Empfangskanäle warten, bis dieser in der for-Schleife abgefragt wird.

Diese Threads würde ich auch NUR zum Erfassen der Daten benutzen. Die Auswertung der Daten ist ja dann nicht mehr zeitkritisch, da beim Empfang ja alle Parameter erfasst wurden (Messwert, Zeitpunkt der Messung)

Single-Core und Multi-Threading:

Es ist sicher richtig, wenn ich auf einem System mit n Kernen sehr rechenintensive Vorgänge in m Threads packe und m>n, dass die Performance nicht steigt, sondern sogar sinkt.
Hier haben wir aber nicht solch einen Fall, denn hier wartet jeder Thread eine ungewisse Zeit und somit sollte für jeden Thread genug Zeit da sein.

Wenn dem nicht so ist, dann ist auch die Single-Thread-Lösung ein nicht gangbarer Weg.
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Benutzerbild von Assarbad
Assarbad

Registriert seit: 8. Okt 2010
Ort: Frankfurt am Main
1.234 Beiträge
 
#3

AW: Echtzeitanwendung - Welche Struktur beim Dateizugriff?

  Alt 6. Nov 2010, 13:59
Hallo,

mehrere Threads bringen in meinem Falle nichts. Bei einer Single-Core-CPU wird ja alles nacheinander ausgeführt, d.h. ich habe mir Funktionen geschrieben, die in einer For-Schleife meine Sensoren durchgehen und diverse Dinge berechnen etc.
Das ist ein Irrtum. Selbst auf einem Einkern-System bieten Threads eine bessere Granularität bei der Ausführung. Zugegeben, irgendwann wird auch der Overhead zu groß, aber das dauert ne Weile.

Aber mal ne Frage. Müssen denn die Daten immer sofort geschrieben werden? Oder ginge sammeln und dann schreiben aus einem dedizierten Thread?
Oliver
"... aber vertrauen Sie uns, die Physik stimmt." (Prof. Harald Lesch)
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.879 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: Echtzeitanwendung - Welche Struktur beim Dateizugriff?

  Alt 6. Nov 2010, 14:01
Sonst würde Intel ja auch nicht auf Hyperthreading setzen
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#5

AW: Echtzeitanwendung - Welche Struktur beim Dateizugriff?

  Alt 6. Nov 2010, 14:14
Zitat von mkinzler;:
Sonst würde Intel ja auch nicht auf Hyperthreading setzen
Und wozu gebe es sonst das TThread-Objekt, wenn es nur interessant für Multi-Cores wäre.
Den Einwand, es gibt ja auch schon lange Multi-Cores, kontere ich mit es gibt aber auch schon 64Bit Systeme nur für Delphi nicht
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Benutzerbild von Assarbad
Assarbad

Registriert seit: 8. Okt 2010
Ort: Frankfurt am Main
1.234 Beiträge
 
#6

AW: Echtzeitanwendung - Welche Struktur beim Dateizugriff?

  Alt 6. Nov 2010, 14:21
Den Einwand, es gibt ja auch schon lange Multi-Cores, kontere ich mit es gibt aber auch schon 64Bit Systeme nur für Delphi nicht


Ich glaube ja HT ist einfach nur billiger
Oliver
"... aber vertrauen Sie uns, die Physik stimmt." (Prof. Harald Lesch)
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#7

AW: Echtzeitanwendung - Welche Struktur beim Dateizugriff?

  Alt 6. Nov 2010, 14:26
Den Einwand, es gibt ja auch schon lange Multi-Cores, kontere ich mit es gibt aber auch schon 64Bit Systeme nur für Delphi nicht


Ich glaube ja HT ist einfach nur billiger
Alter Wein in neuen Schläuchen

Was einem da doch das Horn schwillt, wenn man im Task-Manager x-Cores sieht (obwohl man nur x/2 hat)
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.929 Beiträge
 
Turbo Delphi für Win32
 
#8

AW: Echtzeitanwendung - Welche Struktur beim Dateizugriff?

  Alt 6. Nov 2010, 14:37
Ich weiß nicht, ob ich bei VxWorks unbedingt von Threads sprechen kann. Da gibt es schon sowas in der Art, aber das ist nicht direkt mit Windows vergleichbar.
Und die Erfassung + Auswertung muss zeitkritisch erfolgen. Ich muss nämlich "live" prüfen, ob sich z.B. ein Spannungswert innerhalb der zulässigen Grenzen befindet und wenn nicht, die Messung beenden und solche Dinge.

Ich würde auch sagen, dass die Performance bei mehreren Threads eher sinkt, da häufig alle Messungen gleichzeitig ablaufen und somit alle Threads aktiv wären. Und dann greift bei gleichen Prioritäten das Round-Robin-Verfahren und dann weiß ich erst recht nicht mehr genau, was wann ausgeführt wird.
Overhead ist auch massiv vorhanden, da ich die Ethernet-Daten in jeden einzelnen Thread leiten muss und dort separat bewerte.
So kann ich es im Hauptthread für alle Sensoren auswerten (pro Schleifendurchlauf einmal für alle Sensoren, nicht pro Sensor einmal).

Ach das ist echt ein Käse ...

Geändert von Matze ( 6. Nov 2010 um 14:41 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:38 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz