Laden...

[erledigt] textdatei gleichzeitig lesen (TH1) und schreiben (TH2) threadsafe ?

Erstellt von snupi vor 14 Jahren Letzter Beitrag vor 14 Jahren 2.516 Views
S
snupi Themenstarter:in
357 Beiträge seit 2007
vor 14 Jahren
[erledigt] textdatei gleichzeitig lesen (TH1) und schreiben (TH2) threadsafe ?

ist gleichzeitiges lesen (thread 1) und schreiben (thread2) einer textdatei threadsafe ?

thread 1 liest nur
thread 2 schreibt nur

S
snupi Themenstarter:in
357 Beiträge seit 2007
vor 14 Jahren

getestet mit File.OpenRead / File.AppendText

The process cannot access the file 'c:\test.txt' because it is being used by another process.

U
1.688 Beiträge seit 2007
vor 14 Jahren

Hallo,

getestet mit File.OpenRead / File.AppendText

was will uns der Dichter damit sagen?

"Ich habe die Forumssuche nicht benutzt."

Ansonsten funktioniert das wie bei jeder gemeinsam genutzten Ressource - der Zugriff muss synchronisiert werden.

193 Beiträge seit 2007
vor 14 Jahren

Versuchs mit

Lock
**:::{style="color: darkblue;"}If debugging is the process of removing bugs, then programming must be the process of putting them in.){darkblue}** Dijkstra
49.485 Beiträge seit 2005
vor 14 Jahren

Hallo snupi,

gleichzeitiges lesen (thread 1) und schreiben (thread2) einer textdatei

also erstmal stellt sich die Frage, warum zwei Threads über eine Datei kommunizieren, wo ihnen doch alle anderen Möglichkeiten der Kommunikation offen stehen? Oder liegen die beiden Threads nicht in demselben Prozess?

The process cannot access the file 'c:\test.txt' because it is being used by another process.

Um überhaupt gemeinsam zugreifen zu können, braucht es auf beiden Seiten den passenden FileShare-Modus.

Lock

Braucht man bei Dateioperationen nicht unbedingt. Aber blind darf man natürlich auch nicht vorgehen. Insgesamt ist Synchronisation ein durchaus umfangreiches, komplexes, kompliziertes und tückisches Thema, das man nicht einfach mal so nebenbei erledigt. Man sollte dabei wirklich genau wissen, was man tut, sonst kann es leicht passieren, dass ein Programm auf dem eigenen Rechner läuft, aber auf anderen ständig nervige Probleme bereitet. Stichwort Race Condition.

Am besten du beschäftigst dich mal gründlich mit dem Thema [Artikel] Multi-Threaded Programmierung.

herbivore

S
snupi Themenstarter:in
357 Beiträge seit 2007
vor 14 Jahren

es wird nicht über files kommuniziert sondern ein thread schreibt daten in das file (ähnlich logdaten) und ein thread kann diese daten wieder ausgeben

das mit lock hatte ich eh - nur dachte ich wenn einer NUR liest und einer NUR schreibt wäre gleichzeitig möglich

... multithreading und synchronisation ist mir schon klar 😉

49.485 Beiträge seit 2005
vor 14 Jahren

Hallo snupi,

es wird nicht über files kommuniziert sondern ein thread schreibt daten in das file (ähnlich logdaten) und ein thread kann diese daten wieder ausgeben

... und genau das ist doch eine Kommunikation über eine Datei. Der eine Thread könnte dem anderen die Daten ja auch direkt übermitteln, bzw. sie könnten auf gemeinsame Daten zugreifen.

herbivore

S
snupi Themenstarter:in
357 Beiträge seit 2007
vor 14 Jahren

das problem ist, dass es ein file geben muss, da auch nach pc-neustart die daten vorhanden sein müssen

habe jetzt um die fileoperatoren das locking wieder eingeführt