Einzelnen Beitrag anzeigen

alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#17

Re: 1 Datei und 2 Prozesse ...

  Alt 11. Sep 2009, 08:08
Zitat von moelski:
Ich klammere deshalb das ganze Lesen mit dem Inkementieren und Dekrementieren eines Counter - nennen wir ihn mal Z.
Fast richtig. Nur das 'Z' nicht threadsicher ist. Wenn die Threads gleichzeitig Z verändern, kippt dieses System. Garantiert.
Verwende also einfach eine Semaphore oder innerhalb einer Anwendung (aber unterschiedlichen Threads!) eine 'TCriticalSection'.

So schützt Du den Zugriff, sorgst also dafür, das garantiert nur maximal ein Thread die Resource benutzen kann:
Delphi-Quellcode:
uses SyncObjs;
...
FileCriticalSection := TCriticalSection.Create;
...
// Thread1:
...
FileCriticalSection.Enter;
Try
  WriteTheFile;
Finally
  FileCriticalSection.Leave;
End;
...

// Thread2:
...
FileCriticalSection.Enter;
Try
  ReadTheFile;
Finally
  FileCriticalSection.Leave;
End;
...
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat