lesen und schreiben gleichzeitig möglich?
-
Hat der Schreib-Lesearm der Festplatte auch nen Kumpel bzw. nen Knopf im Ohr ?
-
ne aber der ist ja so schnell, da wir es nicht mitkriegen wenn er es tut.
ich meine - kann ein prozessor 2 sachen gleichzeitig? nein.
kann das unser programm? nein. das ist ja alles interrupt shit.^^
hier mal was tun
da mals was tun
dann dort
und wieder hierund alles so schnell das es niemand merkt das er es gar net gleichzeitig kann
-
Dieser Thread wurde von Moderator/in Jansen aus dem Forum VCL/CLX (Borland C++ Builder) in das Forum Rund um die Programmierung verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
Gleichzeitig lesen und schreiben geht nicht.
Weiss ja nicht was du mit gleichzeitig meinst, aber natürlich geht das. Du kannst eine Datei durch mehrere Programme öffenen und die können lesen und schreiben.
Aber ich muss mich ja hier nicht rumstreiten
-
Gleichzeitig im Sinne vom Gleichzeitig geht nicht^^ Festplatte kann an einer Stelle zur selben Zeit nur eine Operation ausführen
Wenn du aber meinst das 2 Programme dieselbe Datei geöffnet haben und einer liest. während der andere gerade schreibt und das im Sinne des Multitasking gleichzeitig meinst, ja das geht.
Deswegen gibt es auch diese Flags zum Öffnen, wo man die Zugriffrechte angibt.
-
Pellaeon schrieb:
Gleichzeitig im Sinne vom Gleichzeitig geht nicht^^ Festplatte kann an einer Stelle zur selben Zeit nur eine Operation ausführen
Genau so wars gemeint.
Natürlich kannst du dir durch Multitasking den Eindruck erschaffen, das es gleichzeitig passiert.
Nur dein Schreib-Lesekopf kann halt nur zu einem Zeitpunkt entweder Lesen oder Schreiben.
-
Gleichzeitig im Sinne vom Gleichzeitig geht nicht^^ Festplatte kann an einer Stelle zur selben Zeit nur eine Operation ausführen
Natürlich kann sie das ggf. über die mehrfach vorhandenen Köpfe. und das eine Dateinicht unbedingt auf einem Zylinder liegt, sondern über mehrere verteilt ist. Diese Technil bringt auch den Vorteil beim reinen lesen,dass mehrere Köpfe die Daten anliefern
Genau so wars gemeint.
Natürlich kannst du dir durch Multitasking den Eindruck erschaffen, das es gleichzeitig passiert.
Nur dein Schreib-Lesekopf kann halt nur zu einem Zeitpunkt entweder Lesen oder Schreiben.Was für eine schöne Haarspalterei. Das war nicht die Ausgangsfrage. Hier wurde um Rat gesucht, mehrfach auf eine Datei zuzugreifen. Nicht die Frage, wie die Festplatte das letztendlich intern organisiert. Schließlich wird ja auch in einer Diskussion um Thread nicht darüber philosophiert, das Threads auch nicht gleichzeitig laufen, denn der Prozessor führt ja immer nur einen Befehl aus
-
Natürlich kann sie das ggf. über die mehrfach vorhandenen Köpfe. und das eine Dateinicht unbedingt auf einem Zylinder liegt, sondern über mehrere verteilt ist. Diese Technil bringt auch den Vorteil beim reinen lesen,dass mehrere Köpfe die Daten anliefern
Glaubs mir. Bei ein und der selben Datei ist dies nicht möglich.
-
Was für eine schöne Haarspalterei. Das war nicht die Ausgangsfrage.
Was für eine Haarspalterei ???
Natürlich war das die Ausgangsfrage.
Kommt auf den Interpreter an.
-
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.