lesen und schreiben gleichzeitig möglich?



  • Das war die Ausgangsfrage!

    Kann man eine Datei schreibend öffnen und in sie schreiben (z.B. mit fopen und fwrite) und gleichzeitig aus ihr lesen (mit einem anderen Programm)

    Ich kann darin jedenfalls nicht erkennen, das es darum geht wann wo ein Schreibkopf zugreift.

    Es geht darum mehrfach, gleichzeitig auf eine Datei zuzugreifen. Und das ist eindeutig möglich. Das "GLEICHZEITGI" war bestimmt nciht so zu werten, dass die Antwort heisst:

    "Nein, geht nicht, weil nichts gleichzeitig passieren kann"

    Vielmehr stellt die Funktion CreateFile ja mittel und Wege zur Verfügung um eine Datei shares (read/write) zu öffnen, womit ein gleichzeitiger Zugriff im Sinne zweier Programm möglich ist.



  • Dep schrieb:

    Kann man eine Datei schreibend öffnen und in sie schreiben (z.B. mit fopen und fwrite) und gleichzeitig aus ihr lesen (mit einem anderen Programm) ...oder kommt es wenn lese und schreib Zugriff sich kreuzen zu einem Fehler?

    Kann es passieren, das sich Schreib und Lesezugriff "kreuzen" und es zu einem Fehler kommt ?
    Das ist doch die Frage oder ?
    Nein, da beides zur gleichen Zeit bei ein und dem selben File technisch nicht möglich ist.
    Natürlich kann das eine Programm in ein File schreiben und das andere aus dem selben Lesen. Aber nicht im selben zeitlichen Moment.



  • Ist dann dir Frage, was

    Aber nicht im selben zeitlichen Moment.

    Wenn das zu verstehen ist, beide Programm laufen und schreiben und lesen -> ja

    Wenn das zu verstehen ist, beide Programm laufen und schreiben und lesen auf die Microsekunde zur gleichen Zeit -> sicherlich schwierig, wird aber vom BS geregelt.



  • ????
    dftt ???



  • okay...
    a) dual core processor ... schonmal gehört? Sag nicht das es nicht geht, das zwei programme gleichzeitig auf eine datei zugreifen können...

    b) sieh dir mal pipes an... ist so viel ich weiß genau das! Allerdings wird das eben auch gemanaged... und ist eher für netzwerk gedacht... aber funktionieren tuts denk ich schon!

    mfg Manuel



  • Manuelh87 schrieb:

    okay...
    a) dual core processor ... schonmal gehört? Sag nicht das es nicht geht, das zwei programme gleichzeitig auf eine datei zugreifen können...

    b) sieh dir mal pipes an... ist so viel ich weiß genau das! Allerdings wird das eben auch gemanaged... und ist eher für netzwerk gedacht... aber funktionieren tuts denk ich schon!

    mfg Manuel

    So langsam brech ich echt zusammen. 😮
    http://de.wikipedia.org/wiki/Dual-Core#Sinn_und_Zweck_von_Multicore-Prozessoren
    und
    http://de.wikipedia.org/wiki/Pipe
    Oder meinst du die Pipe die du gerade geraucht hast ?



  • Oder heißen Dual Core Prozessoren so, weil sie alles doppelt so gut können ? 🙄
    Ich kann also mit diesem Wunderwerk der Technik direkt über Röhren (Pipes) meine Daten auf Festplatte sichern und einlesen (natürlich mit doppelter Geschwindigkeit) ...
    Wahnsinn ... 😮 :p 😮



  • remark schrieb:

    Oder heißen Dual Core Prozessoren so, weil sie alles doppelt so gut können ? 🙄
    Ich kann also mit diesem Wunderwerk der Technik direkt über Röhren (Pipes) meine Daten auf Festplatte sichern und einlesen (natürlich mit doppelter Geschwindigkeit) ...
    Wahnsinn ... 😮 :p 😮

    🤡 🤡 🤡 👍 *rofl*

    @Manuelh87: Erstmal Dual-Core an sich is nix neues. Multiprozessorsysteme gibts schon lange, jetzt kommts halt auch in den Desktopbereich.

    Du kannst 100 Prozessoren haben: eine Festplatte ist trotzdem nur einmal an den Bus angeschlossen ➡ Nix mit gleichzeitigem Zugriff

    Aber natürlich, wie ich und auch andere schon gesagt haben, können natürlich mehrere Prozesse eine Datei geöffnet haben. Das kommt halt ganz drauf, in welchem Modus sie geöffnet wurde. Exklusiv, oder DenyWrite usw.



  • okay... ganz langsam... zuerst denken, dann spamen...

    ich hab nicht um erläuterung über multiprozessor systeme gefragt, oder? lest mal nach...

    das war eine antwort auf eine bemerkung die gefallen ist: und zwar das es ja gar nicht sein kann, dass in der selben microsekunde 2 schreibbefehle kommen... dies hab ich mit dual prozessor systemen ja wohl wiederlegt. (außerdem wartet der prozessor ja normalerweise nicht bis alles auf der disk ist... aber das nur am rande)

    Ich hab allerdings die frage nicht so verstanden, ob man gleichzeitig also genau in der gleichen microsekunde wirklich "geschrieben wird". Ich hab auch nicht angenommen das der frage-verfasser das wirklich so wissen will... denn das dies nicht möglich ist ist ja wohl offensichtlich. (trotzdem danke für die erklärung... sehr hilfreich) allerdings können 2 schreib-befehle gleichzeitig oder auch direkt hintereinander (also während der erste schreib-auftrag noch in gang ist) auftreten, was eben bei pipes benutzt wird. (das fand ich halt ein gutes beispiel...)

    Mann sollte auch versuchen die antworten von anderen nicht dümmstens-möglich auszulegen sonderen vielleicht auch mal hirn einschalten...

    (ps: trotzdem vielen dank für die tollen links, aber ich weiß, wie man google verwendet, also falls es mich jetzt echt urplötzlich interessieren sollte dann weiß ich selbst wo ich suchen muss... trotzdem danke)

    [tipp]
    außerdem (an einen der spammer mit der meines erachtens dümmsten und arogantesten aussage) solltest du nicht immer nur die erste zeile bei wikipedia lesen... so wirst du nichts lernen, junge! Bisschen weiterlesen, dann hätst du auch gesehen das pipes zur kommunikation zwischen wei prozessen verwendet werden (nach wiki); und dann noch etwas: vorsicht, junge, denn nicht alles was wiki von sich gibt ist auch die absolute wahrheit... oder zumnidest nicht unbedingt vollständig. Ich hätte hier noch die named pipes für netzwerk-kommunikation hinzugefügt (obwohl die eh sicher an anderer stelle in wikipedia vertreten sind) einfach nur damit auch 1-zeilenleser eine chance auf information haben!
    Tja, hätte wikipedia das hinzugefügt und hättest du mehr als die erste zeile gelesen, dann hättest du auch sofort den zusammenhang mit pipes und netzwerk, der ja bei meiner aussage klar ersichtlich war, gesehen und hättest darauf richtig reagieren können; und hättest dich da jetzt nicht lächerlich gemacht, weil du pipes nur im zusammenhang mit pfeifen zum rauchen kennst!
    [/tipp]

    [noch ein tipp]
    um solche peinlichen bildungslücken zu schließen, empfehl ich dir ein buch zu lesen... und nicht nur die erste zeile wenn du verstehst... sondern vielleicht sogar ne ganze seite... und dann vielleicht ne 2te... und so weiter... und nach ein paar wochen hast du dann das ganze bilderbuch durch und kannst stolz auf die sein, und weißt noch dazu, dass du jetzt weiß, wie es auf einem richtigen bauernhof abgeht 😮
    [/tipp]

    * um klarzustellen was eigentlich gemeint war:
    a) war eigentlich nur auf den gleichzeitigen funktionesaufrufe von read und write ausgelegt... weil eben vorher gesagt wurde, dass quasi die beiden funktionen nich gleichzeitig aufgerufen werden können; was allerdings nicht stimmt, da es dual-core-prozessoren gibt, welche 2 threads gleichzeitig laufen lassen können und daher auch read und write genau gleichzeitig aufrufen können. Allerdings ändert das ja nichts da ja sowieso das dateiensystem so langsam ist, das kollisionen auch bei einem prozessor entstehen. (also während einem schreibvorgang (wenn write nicht wartet bis alles auf der platte ist) einen read vorgang starten, der dann eben warten muss (also gibt glaub ich nen fehler aus [bei pipes heißts IO_PENDING oder so...] und mann muss es eben später nochmal probieren)

    => also du kannst natürlich einen read befehl machen und einen write befehl die dann überlappen (musst aber glaub ich vorher bei createfile angeben; kenn das nur von named pipes (nein keine pfeifen...).
    denke das wolltest du eigentlich wissen (einfach mal inder msdn createfile nachschlagen und durchlesen 👍)
    ich kann dir auch named pipe klassen von mir schicken wenn du willst, die sind aber für client server applikations über netzwerk gedacht (funktionieren natürlich auch lokal!)

    mfg Manuel



  • Das geht. Die Daten werden gecached. Wenn man allerdings mehrere Schreiboperationen durchfuehrt (auch implizite. Wenn z.B. Cache ersetzt und zurueckgeschrieben wird), ist Datenkonsistenz nicht zwangslauefig garantiert. Da muss man sich dann selbst drum kuemmern.


Anmelden zum Antworten