2 Threads greifen auf die selbe Datei zu, Wie?
-
CSemaphore bringt dir hier überhaupt nichts (einen Semaphore würdest du verwenden, wenn höchstens N threads gleichzeitig auf die Datei zugreifen sollen, aber >N threads laufen)
Bekommst du nun lesenden Zugriff? Siehst Du die richtigen Daten?
für konkurrierendes Lesen der gleichen Datei benötigst du keine zusätzliche Synchronisation.
-
Sehe ich auch so wie peterchen.
Schau dir mal die Parameter fpr CFile an. Da gibt es was für Shared.
-
Das Problem ist aber mit dem CFile nicht behoben. Ich hatte ja auch schon die Flags so gesetzt, das jeder die Datei lesen darf. Geht aber trotzdem nicht.
Aber steht denn nicht in der Hilfe, das man bei gleichzeitigem Zugriff auf eine Datei synchronisieren muß, oder habe ich das falsch verstanden?
Ich werde also nochmal weiter suchen
Bis später...
-
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,&fileExceptionDu 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.