Gleichzeitiges schreiben von ini Files von mehreren PCs aus - Druckversion +- LabVIEWForum.de (https://www.labviewforum.de) +-- Forum: LabVIEW (/Forum-LabVIEW) +--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein) +---- Forum: Datenbank & File IO (/Forum-Datenbank-File-IO) +---- Thema: Gleichzeitiges schreiben von ini Files von mehreren PCs aus (/Thread-Gleichzeitiges-schreiben-von-ini-Files-von-mehreren-PCs-aus) |
Gleichzeitiges schreiben von ini Files von mehreren PCs aus - baesi - 25.08.2006 14:05 Hallo zusammen, Ich habe eine Applikation entwickelt welche Messsignale aufzeichnet, abspeichert etc. Die Konfiguration des Programms wird in INI Files abgespeichert und kann auch von dort wieder geladen werden.Nun wurde eine 2.te Messkarte gekauft. Der Wunsch der Benutzer lautet nun, dass die Konfigurationen gemeinsam auf einem Netzwerk PC abgespeichert und auch wieder geladen werden können. Nun frage ich mich einfach, was passiert wenn gleichzeitig von 2 PCs aus auf dasselbe INI File geschrieben wird? Gibt es eine Möglichkeit das ein Benutzer ein INI File während des Schreibens sperrt? Ich denke an was ähnliches wie "File open ; deny mode". Für Eure Hilfe währe ich sehr dankbar Gruss Baesi Gleichzeitiges schreiben von ini Files von mehreren PCs aus - DoubleU - 25.08.2006 14:10 spontan hätte ich jetzt gesagt, dass es gar nicht geht ein File mehrmals zum schreiben zu öffnen. aber lass mich gern eines besseren belehren... zudem hast du ja die options zum einstellen, bei der open File function... Edit: beim zweiten nachdenken scheint es natürlich schon zu gehn. Kommt darauf an wie lange dein Schreibvorgang dauert würd ich dann sagen, wenn du die Daten nur kurzzeitig einmal ins Ini file schreibst, sehe ich es als nicht so problematisch an. Wenn das schreiben länger andauert müsstest du eine 2.te Datei erzeugen und die andere so lange auf read-only setzen und dann wieder ersetzten, oder wie auch immer, nur Gedankengänge..... Gruss Uli Gleichzeitiges schreiben von ini Files von mehreren PCs aus - baesi - 25.08.2006 15:29 Es ist mir schon klar, dass es ein riesiger zufall sein müsste, bei so einem kurzen schreibvorgang, wenn beide gleichzeitig auf daselbe INI file schreiben. ich hatte zu testzwecken versucht auf ein INI File mit 2 Instanzen in 2 paralleln loops zu schreiben, konnte dabei aber keine fehler feststellen. ist aber logisch, da 2 parallele loops in einem vi natürlich nie gleichzeitig ablaufen. ich möchte aber auch nicht, dass die konfiguration von person1 von person2 überschrieben wird, was natürlich weniger schön wäre. lieber wäre mir aber eine richtig saubere lösung. ich weiss aber nicht wie ich ein ini file sperren kann. eventuel hat doch noch jemand einen vorschlag Gleichzeitiges schreiben von ini Files von mehreren PCs aus - DoubleU - 25.08.2006 15:37 es gibt unter File i/o set permissons, da kannst du die rechte für Files einstellen. Wie wäre es, wenn du das file vor dem zugriff umbenennst und dann die neue konfiguration speicherst und wieder umbenennst? Dann hat in der Zeit die andere Instanz keinen Zugriff, solange das File nicht vorhanden ist. Jedoch kann es dabei ja auch wieder passieren, das zufällig beide gleichzeitig das File umbenennen. Aber wie wahrscheinlich ist denn ein solcher Fall? Wenn du das auschließen willst, benötigst du evt. noch eine synchronisation über semaphore etc. im prinzip hast du ja ein shared memory damit... Edit: Wenn du das Ini file "in einem Rutsch" schreibst hast du sowieso keine Probleme, da kannst du es selbst bei 2 Instanzen meines wissens nicht zerschießen. Du würdest das kurz vorher geschriebene doch nur nochmals überschreiben. Es muss also zuerst geklärt werden wie du in das File schreibst... also lesen und schreiben... oder nur schreiben. Gruss Uli Gleichzeitiges schreiben von ini Files von mehreren PCs aus - Y-P - 25.08.2006 15:58 Ich habe so etwas ähnliches schon mal mit Shared Variables gelöst und zwar könntest Du es so machen, dass Du kurz vor dem Schreiben eine boolesche Shared Variable auf True setzt und nur wenn diese auf True ist darf auf dem anderen Rechner auch geschrieben werden. Erst nach dem Schreibvorgang wird diese dann wieder zurückgesetzt. Mit einer zweiten booleschen Shared Variable machst Du das dann genau so auf dem anderen Rechner. Dieser darf seine Variable nur auf "True setzen", wenn die andere nicht schon auf "True" gesetzt wurde (z.B. mit einem Case). Du verriegelst quasi die beiden Rechner gegenseitig. Gruß Markus ' schrieb:Hallo zusammen, |