Thread Storable->retrieve parallel aus einem weiteren Programm?
(12 answers)
Opened by toby at 2009-09-30 15:28 Quote Mit Kopieren hat das nichts zu tun. Was ich meinte ist folgende vorgehensweise. "dateia" nutzen derzeit alle zum auslesen. Dein Programm schreibt neue Daten ersteinmal in "dateib". Nachdem es fertig ist benennst du "dateib" nach "dateia" um. Um es kurz zu halten. Soetwas stellt unter Unix ähnlichen Betriebssystem kein Problem dar, unter Windows würde dies nicht gehen. Der andere Punkt war einfach nur ein Hinweis das wenn du "immutable" dateien hast (Dateien die sich nicht verändern). Dann brauchst du auch kein locking. Das ist als Antwort darauf weil du fragtest ob es Probleme gibt wenn zwei Programme gleichzeitig eine Datei lesen. Lesen generell stellt kein Problem dar. Probleme gibt es immer nur dann wenn du Änderungen erlaubst bzw. gleichzeitig Liest/Schreibst. Dann musst du mit Locking arbeiten. Quote Somit kann es einen Moment geben wo gleichzeitig gelesen/geschrieben wird. Daher um es einfach zu halten solltest du Locking nutzen. Erstes was ich aber schrieb geht auch. Vorteil wäre das du kein Locking hast, und du damit wirklich Parallel arbeitest. Mit Locking greift immer nur einer gleichzeitig auf die Datei zu. Allerdiengs spielt das wenn du nur selten auf die datei zugreifst sowieso alles keine Rolle und von der vorgehensweise ist es simpler einfach das locking prinzip zu nutzen. Wo es eine Rolle spielen würde wäre wenn du hunderte abfragen pro sekunde hättest. Dann wäre es aber sinvoller wohl gleich ein TCP/IP Server aufzubauen anstatt es über das I/O zu machen. Quote Naja Locking ist ja gerade dafür da wegen "Paralleln" Zugriff, wenn du kein Parallelen zugriff hättest brauchst du auch kein Locking. Quote Er wartet solange bis er den Lock bekommt und schreibt dann, sprich dein Programm stoppt, sofern du kein "non-blocking lock" machst. Quote Storable speichert Daten Binär ab. Unterschiedliche Architekturen haben sogenannte BigEndian oder LittleEndian, das gibt an wie Bits zu Interpretieren sind. Nutzt du nur "lock_store" dann wird das Verfahren deiner Maschiene genutzt. Wenn du Daten aber mit Storable z.B. über Rechner hinweg austauscht, Sprich über Netzwerk etc. dann ist es ziemlich nachteilig wenn ein Rechner in LittleEndian Speichert und der andere es als BigEndian versucht zu interpretieren, das läuft dann schief. Das "n" gibt an das du die Netzwerkordnung nutzen möchtest. Daher Daten sind auch über Systeme austauschbar die das eine oder das andere verfahren nutzen. Für genaueres kannst du das hier lesen: http://de.wikipedia.org/wiki/Byte-Reihenfolge Nicht mehr aktiv. Bei Kontakt: ICQ: 404181669 E-Mail: perl@david-raab.de
|