Laden...

StreamWriter -> NetworkStreamer sicher?

Erstellt von HolySheepy vor 15 Jahren Letzter Beitrag vor 15 Jahren 1.790 Views
H
HolySheepy Themenstarter:in
44 Beiträge seit 2006
vor 15 Jahren
StreamWriter -> NetworkStreamer sicher?

Hi,

sind StreamWriter sicher? also wenn 2 im selben Moment auf den selben Stream ausgeben(Flush()) kann es dann zu Fehlern kommen oder wartet einer bis der andere fertig ist?

Gelöschter Account
vor 15 Jahren

nun, solange du nicht in separaten threads das flush() machst, ist es erstmal unmöglich das sie sich in die quere kommen. machst du es allerdings aus verschiedenen threads, bekommst du eine exception (ich bin mir aber nciht sicher welche genau).

3.971 Beiträge seit 2006
vor 15 Jahren

Mit Streams hast du immer Probleme wenn mehrere Threads auf diesen zugreifen. Der eine Thread schreibt im Moment 4096 bytes an die Position x, Thread 2 setzt die Position auf y und schreibt auch 4096 bytes in den Stream. Der Inhalt sieht auf jedenfall danach sehr lustig aus.

Um das ganze zu Umgehen, ist es wichtig, das der Zugriff auf den zugrunde liegenden Stream synchronisiert und threadsicher erfolgt. Dabei ist wichtig, das immer nur eine Funktion (egal ob synchron oder asynchron) auf den Stream zugreift.

Es gibt 3 Arten von Menschen, die die bis 3 zählen können und die, die es nicht können...

Gelöschter Account
vor 15 Jahren

bei sowas eignet sich übrigens auch so ne ampelklasse.

H
HolySheepy Themenstarter:in
44 Beiträge seit 2006
vor 15 Jahren

hm stimmt, ich greif einfach nur in einem Thread drauf zu ^^ dann ist das ja alles geregelt

W
872 Beiträge seit 2005
vor 15 Jahren

Ich hatte das Gefuehl, dass beim Benutzen von Network-Stream aus mehreren Threads die Daten aus den beiden Threads vermischt werden - so war das zumindest unter Mono.

Gelöschter Account
vor 15 Jahren

wie gesagt. sobald mehrere threads auf einen stream schreiben wollen, benutzt man normalerweise eine ampel oder queue, die das ganze dann seriell macht.

W
872 Beiträge seit 2005
vor 15 Jahren

Mir war das aus Versehen passiert, da ich wusste, dass alle Socket Methoden threadsicher sind - insofern hatte ich erwartet, dass dann auch Network-Steam threadsicher ist, aber dem ist nicht so...
Ein lock um den Zugriff rum ist ja nicht so schwer/schlimm...

Gelöschter Account
vor 15 Jahren

Ein lock um den Zugriff rum ist ja nicht so schwer/schlimm...

du meinst wohl eher: "nicht so schwer aber schlimm"

stichwort: "sterbende threads"