![]() |
Datenstrukturen mit Nebeneffekt - Referenzen - wie geht es? - Druckversion +- LabVIEWForum.de (https://www.labviewforum.de) +-- Forum: LabVIEW (/Forum-LabVIEW) +--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein) +--- Thema: Datenstrukturen mit Nebeneffekt - Referenzen - wie geht es? (/Thread-Datenstrukturen-mit-Nebeneffekt-Referenzen-wie-geht-es) Seiten: 1 2 |
RE: Datenstrukturen mit Nebeneffekt - Referenzen - wie geht es? - macmarvin - 16.01.2015 10:35 (16.01.2015 09:34 )buechling schrieb: Dazu nur noch eine Frage: LabView sperrt den Speicher nun automatisch, wenn eine Inplacestruktur mit lesen anfängt? Was ist wenn ich nun gleichzeitig in diesem Speicherbereich nur lesen will - kann ich dies dann trotzdem noch irgendwie machen oder muss ich warten bis der Schreibvorgang abgeschlossen ist ( eventuell dauert die Berechnung etwas länger und ich möchte einfach nur den alten Wert auslesen ) Ja das ist eine Kerneigenschaft, dass die Strukturen ein Locking mitbringen. Der erste Zugriff gewinnt. [attachment=51819] Hier einfach mal mit den start delays spielen. Falls sie gleich sind ist das Verhalten undefiniert. (Auch wenns bei 1000 Versuchen sich immer gleich verhält, beim nächsten Compile schaut's mglw. anders aus.) Das Locking bringt natürlich auch die Gefahr eines Deadlocks mit. [attachment=51820] (am besten mit Highlighting aktiviert laufen lassen) RE: Datenstrukturen mit Nebeneffekt - Referenzen - wie geht es? - buechling - 16.01.2015 13:45 Ahja okay.. vielen Dank für die ganzen Hinweise! Ich denke jetzt kriege ich es hin.. Hier noch die ultimative Lösung wenn es nur um Geschwindigkeit und nicht um die Konsistenz der Daten gehen soll. Eigenschaftknoten aktivieren: [attachment=51821] Lesen und schreiben ohne Lock: ( Ergebnis 2345 ) [attachment=51822] RE: Datenstrukturen mit Nebeneffekt - Referenzen - wie geht es? - macmarvin - 16.01.2015 14:02 Die Sache mit den Properties hatte ich bewusst nicht erwähnt... führt eher wieder zu Get/Set Programmen ohne threadsicheres Locking. Wenn man weiss was man tut, ist's natürlich ein elegantes Detail, was LV da hat. Für ein paar Takte weniger: dynamic dispatch aus und die ZugriffsVIs inlinen. (ob das messbar ist?... keine Ahnung ![]() |