Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Log Datei Threadsave speichern (https://www.delphipraxis.net/143177-log-datei-threadsave-speichern.html)

franktron 11. Nov 2009 11:11


Log Datei Threadsave speichern
 
Wie kann ich eine Logdatei Threadsave Speichern.

Also ich habe 2 Threads die Daten per FTP Verschicken, jetzt sollen diese Threads in eine Logdatei speichern
aber wenn jetzt Thread 1 und Thread 2 gleichzeitig was schreiben wollen knallst wohl.

Luckie 11. Nov 2009 11:18

Re: Log Datei Threadsave speichern
 
Dann musst du den Zugriff mit Delphi-Referenz durchsuchenCriticalSection synchronisieren.

franktron 11. Nov 2009 11:43

Re: Log Datei Threadsave speichern
 
Gibts da irgendwo eine Howto wie das genau funktioniert.

sirius 11. Nov 2009 11:49

Re: Log Datei Threadsave speichern
 
Du erstellst eine Klasse, von der du ein Objekt an beide Threads übergibst:
Delphi-Quellcode:
type
 TDatei=class
  constructor Create; //FCriticalSection.Create
  Destructor Destroy; override //fCriticalSection.free;
 private
  FFileName:string;
  FCriticalSection:TCriticalSection;
 public
  property FileName:string;
  procedure WritetoFile(const s:String);
end;

//...
procedure TDatei.WritetoFile;
begin
  CriticalSection.Enter;
  try
    öffne Datei
    schreibe Datei
    schließe Datei
  finally
    CriticalSection.leave;
  end;
end;
Jetzt kannst du aus jedem Thread einfach WritetoFile aufrufen und alles ist abgesichert.

(aber wird Dateiarbeit nicht auch vom OS abgesichert :gruebel: )

franktron 11. Nov 2009 12:00

Re: Log Datei Threadsave speichern
 
Zitat:

Zitat von sirius
(aber wird Dateiarbeit nicht auch vom OS abgesichert :gruebel: )

Ja aber es können doch nicht 2 Prog gleichzeitig schreiben oder ?

himitsu 11. Nov 2009 12:16

Re: Log Datei Threadsave speichern
 
Wenn die Zugriffsrechte es verbieten, dann nicht.

uoeb7gp 12. Nov 2009 14:40

Re: Log Datei Threadsave speichern
 
Liste der Anhänge anzeigen (Anzahl: 1)
HI, versuchs damit.

Features:
Threaded-Cached Logwriter, entwickelt für hocklast Serveranwendungen, um WorkerThreads nicht zu behindern.

lg.

Viktorii 2. Dez 2009 13:55

Re: Log Datei Threadsave speichern
 
Moin.


Ist TFileStream nicht threadsafe?

Habe sowas bis jetzt immer damit gemacht :gruebel:

himitsu 2. Dez 2009 14:06

Re: Log Datei Threadsave speichern
 
Nein, ist er grundsätzlich erstmal nicht.

Wenn du aber jedem "Read/Write" die Startposition getrennt mitgibst oder jeder Thread seinen eigenen Stream auf die selbe Datei hat, dann wäre er teilweise threadsicher.


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:49 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 by Thomas Breitkreuz