2 Threads greifen auf die selbe Datei zu, Wie?
-
Aber steht denn nicht in der Hilfe, das man bei gleichzeitigem Zugriff auf eine Datei synchronisieren muß
Wo?
Beim gleichzeitigen Lesenden Zugriff mußt du nicht synchronisieren, nur wenn einer schreibt, ist die sync normalerweise notwendig.
-
Ich bin erst bescheuert ????!!!!???
Ich habe denn Fehler jetzt gefunden. Ich hatte ja die Prozeduren getrennt geschrieben, um sie woanders verwenden zu können. Und nun kommt's. In jeder der Prozeduren wird die Datei geöffnet..also zweimal und das geht dann nun wirklich nicht..Also doch noch mal alles umschreiben..Schei...e!!Aber danke für die Antworten
Gruß
-
öhm... natürlich kannst du die gleiche Datei zweimal öffnen (brauchst du sogar für getrennte Seek-Positionen).
Du mußt nur beim öffnen SHARE_DENY_NONE o.ä. angeben
-
Ja, da habe ich mich nun doch mal wieder geirrt. Hatte aber trotzdem das Problem immer noch, da die Dateien jeweils auch wieder geschlossen werden. Und das ging nicht. Das Problem konnte ich erst beheben, als ich genau den einen Prozess gestartet habe und dann den anderen, umgedreht gehts einfach nicht.
Ich weiß nicht wieso, aber so gehts halt auch.Gruß
-
Was gibt's denn für einen Fehler?
-
evil-peter schrieb:
CFile::modeCreate|CFile::modeWrite|CFile::typeBinary,&fileException
Du verwendest doch sicher nur modeRead oder?
-
Ja ich verwende nur lesen, aber nicht modeRead sondern MMIO_READ, weil ich das nicht mit CFile mache. Ich benutze da eine eigene Klasse.
@peterchen:
Der Fehler ist so ein allgemeiner Fehler in der Anwendung....muß geschlossen werden...usw. Kann ich nichts mit anfangen. Ist mir aber mittlerweile egal, es geht ja jetzt so.Gruß
-
Hallo Leute!
Wie kann ich es realisieren dass zwei threads gleichzeitig auf eine datei zugreifen? einer schreibt und der andere liest?Danke
-
Nimm ein IStream Interface. Stichwort: SHCreateStreamOnFile.
-
-alex_ schrieb:
Wie kann ich es realisieren dass zwei threads gleichzeitig auf eine datei zugreifen? einer schreibt und der andere liest?
Du musst die Datei mit CFile::shareDenyNone öffnen.