AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

1 Datei und 2 Prozesse ...

Ein Thema von moelski · begonnen am 10. Mär 2009 · letzter Beitrag vom 11. Sep 2009
Antwort Antwort
Seite 3 von 3     123   
Blup

Registriert seit: 7. Aug 2008
Ort: Brandenburg
1.477 Beiträge
 
Delphi 12 Athens
 
#21

Re: 1 Datei und 2 Prozesse ...

  Alt 11. Sep 2009, 11:59
Zitat von moelski:
Die Grafik steht bereits und ich möchte auch nicht eine neue Grafik berechnen lassen.
Wenn die Grafik niemals neu berechnet wird, brauchts auch keine TCriticalSection.
Aber der ganze Beitrag dreht sich doch darum das dies doch alle 20s notwendig sein kann?

Und wenn das notwendig ist und alle Webseite-Threads durch die TCriticalSection darauf warten müssen, ist es auch egal durch welchen Thread dies ausgelöst wird.
  Mit Zitat antworten Zitat
moelski

Registriert seit: 31. Jul 2004
1.110 Beiträge
 
Delphi 2010 Professional
 
#22

Re: 1 Datei und 2 Prozesse ...

  Alt 11. Sep 2009, 12:04
Moin !

Die Grafik wird im Sekundentakt upgedatet. Das ist das was die Anwendung eben im Normalfall tut - Kurven plotten.

Zitat:
Aber der ganze Beitrag dreht sich doch darum das dies doch alle 20s notwendig sein kann?
richtig. Die Grafik verändert sich laufend und drum muss alles 20 Sekunden ein neues JPG der Grafik geschrieben werden.
Und weil das TChart die Grafik neu zeichnet wenn man neue Punkte einträgt, muss ich nach dem Eintragen irgendwann mal die Grafik speichern.
Mache ich das aus dem Webthread raus, dann kann es sein das die Seite unvollständig gespeichert wird weil sie eben zum Zeitpunkt der JPG Erstellung noch nicht komplett gezeichnet war.

Zitat:
Und wenn das notwendig ist und alle Webseite-Threads durch die TCriticalSection darauf warten müssen, ist es auch egal durch welchen Thread dies ausgelöst wird.
Nicht so ganz. s.o.
Dominik Schmidt
Greetz Dominik

I love Delphi 2007/2010
  Mit Zitat antworten Zitat
Blup

Registriert seit: 7. Aug 2008
Ort: Brandenburg
1.477 Beiträge
 
Delphi 12 Athens
 
#23

Re: 1 Datei und 2 Prozesse ...

  Alt 11. Sep 2009, 13:33
Dann ist das Hauptproblem das du Daten halten und Darstellung nicht trennst.
Aber wenn es für deinen Anwendungsfall reicht...
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#24

Re: 1 Datei und 2 Prozesse ...

  Alt 11. Sep 2009, 13:37
ich hätte es eher so gemacht,
dann sind die Grafiken nicht so lange blockiert
Code:
Webseite-Thread:
- Enter DatenSection
  - Prüfen letzter Grafikerstellungszeitpunkt und ob Daten neue Daten vorhanden, wenn erforderlich
    - [b]Daten lesen[/b]
    - [b]Grafik erstellen[/b]
    - Enter GrafikSection schreiben
      - [b]Grafik speichern[/b]
      - Schreiben Grafikerstellungszeitpunkt
    - Exit GrafikSection schreiben
- Exit DatenSection
- Enter GrafikSection lesen
  - Grafik lesen
- Exit GrafikSection lesen
oder gar so
Code:
Webseite-Thread:
- Enter DatenSection
  - Prüfen letzter Grafikerstellungszeitpunkt und ob Daten neue Daten vorhanden, wenn erforderlich
    - [b]Daten lesen[/b]
- Exit DatenSection
- [b]Grafik erstellen[/b]
- [b]Enter GrafikSection schreiben[/b]
  - [b]Grafik speichern[/b]
  - [b]Schreiben Grafikerstellungszeitpunkt[/b]
[color=silver]- [b]Exit GrafikSection schreiben[/b]
- Enter GrafikSection lesen[/color]
  - Grafik lesen
- Exit GrafikSection lesen
$2B or not $2B
  Mit Zitat antworten Zitat
Benutzerbild von stahli
stahli

Registriert seit: 26. Nov 2003
Ort: Halle/Saale
4.343 Beiträge
 
Delphi 11 Alexandria
 
#25

Re: 1 Datei und 2 Prozesse ...

  Alt 11. Sep 2009, 14:37
Ich hätte überlegt, vor dem Bildupdate kurz die index.html zu ersetzen.
"...wait"
und refresh, jede Sekunde

Wenn ein Browser in dem Moment des Bilderupdates seine Darstellung aktualisiert, muss er gar nicht auf das Bild zugreifen und wartet 1 Sekunde.

Dann das Bild neu speichern und die normale index.html zurückschreiben.

Der nächste Browser-Refresh zeigt das wieder Bild an.

... Ach so, der letzte "zulässige" Bildzugriff kann natürlich immer noch Schreibkonflikte verursachen. Dann sollte man den Schreibversuch einfach nochmal wiederholen.

Stahli
  Mit Zitat antworten Zitat
Apollonius

Registriert seit: 16. Apr 2007
2.325 Beiträge
 
Turbo Delphi für Win32
 
#26

Re: 1 Datei und 2 Prozesse ...

  Alt 11. Sep 2009, 15:19
Darf ich fragen, um was für ein System es sich hier handelt? Ab Windows Vista bzw. Server 2008 gibt es Transactional NTFS, damit ist das ganze am einfachsten gelöst.
Wer erweist der Welt einen Dienst und findet ein gutes Synonym für "Pointer"?
"An interface pointer is a pointer to a pointer. This pointer points to an array of pointers, each of which points to an interface function."
  Mit Zitat antworten Zitat
fajac

Registriert seit: 1. Jul 2009
60 Beiträge
 
#27

Re: 1 Datei und 2 Prozesse ...

  Alt 11. Sep 2009, 15:20
Konflikte zwischen schreibender Instanz und mehreren lesenden Instanzen lassen sich nur komplett vermeiden, wenn wirklich alle zugreifenden Threads über eine CriticalSection synchronisiert werden. Soweit ich das verstanden habe, hast du das für die ClientThreads jetzt erreicht. Allenfalls der schreibende Prozess könnte jetzt noch dazwischenfunken.

Mein Lösungsansatz wäre, die neue Datei mit einem anderen Namen zu erstellen und dann dem Web-Server (z.B. über eine WebService-Methode oder den Aufruf einer virtuellen Website) mitzuteilen, dass die neue Datei da ist und er sie umkopieren kann. Natürlich synchronisiert über dieselbe CriticalSection, die auch die ClientThreads nutzen. Damit sind dann alle Zugriffe auf die Datei in einer Hand.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 3 von 3     123   


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 22:31 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz