' schrieb:aber so lernen andere auch was.
Zitat:Falls jemand ein simples Beispiel hat, wie man das mit einer Klasse lösen kann ohne umständliche Workarounds (2. Klasse zur Organisation der Queue o.ä.),
Das wird nicht gehen. Da gibt es auch in einer strukturierten Sprache große Probleme.
Das Problem liegt darin, wenn mehrere (z.B. 8) (wenn auch nur quasi-)gleichzeitig einen Parameter beschreiben wollen. Es kann aber nur ein einziger der 8 einen Wert speichern. D.h. also, 7 würden umsonst gearbeitet haben. Besonders kritisch wird es dann, wenn vor dem Schreiben ein Wert ausgelesen werden muss, um eine Berechnung des zu schreibenden Wertes durchführen zu können. Dann entsteht ein Zeitraum, während dessen ein Zugriff auf die Klasse verboten werden muss. In einer Single-Thread-Applikation ist das einfach: Da geht so wie so nur eins nach dem anderen. In einer Multi-Thread-Applikation jedoch müssen Vorkehrungen getroffen werden, die ein Unterbrechen kritischer Vorgänge verhindern. Ich weis (aus Debug-Fenstern), dass es in strukturierten Sprachen solche Möglichkeiten gibt.
Auch in LabVIEW gibt es solche Möglichkeiten: Klasse in Queue legen. Die Lösung mit der Queue ist in so fern hervorragend, weil die komplette Klasse mit allen Methoden sowie private und public Data mit nur einem einzigen "Befehl" geschützt werden kann.
[*grübel*]
Die Queue hat nur einen Nachteil: Man kann kein SubVI machen, das kontinuierlich läuft und die Klassen-Daten kontinuierlich manipuliert. Irgendwann muss dieses SubVI nämlich stoppen und die Klasse für eine bestimmte Zeit in die Queue legen - wie sonst sollten andere die Klasse verwenden können.