INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.


Antwort schreiben 

Reentrance



Wenn dein Problem oder deine Frage geklärt worden ist, markiere den Beitrag als "Lösung",
indem du auf den "Lösung" Button rechts unter dem entsprechenden Beitrag klickst. Vielen Dank!

22.10.2006, 00:32 (Dieser Beitrag wurde zuletzt bearbeitet: 22.10.2006 00:35 von Lucki.)
Beitrag #14

Lucki Offline
Tech.Exp.2.Klasse
LVF-Team

Beiträge: 7.699
Registriert seit: Mar 2006

LV 2016-18 prof.
1995
DE

01108
Deutschland
Reentrance
' schrieb:das mit dem zumuellen hat nur bedingt seine Richtigkeit.
Das sehe ich anders: Das ist nicht nur "nur bedingt richtig" sondern schlichtweg falsch. Das läßt sich leicht nachprüfen. Jedes Ikon eines reentranten VI inerhalb eines Programms ist ein eigener Clon. Wenn es drei Ikons im Programm gibt, dann gibt es diese drei Clones, und nicht mehr. Wenn in einer Schleife, wie das in einer Schleife eben der Fall zu sein pflegt, ein und dasselbe Ikon eines Sub-VIs immer wieder aufgerufen wird, und das Sub-VI ist reentrant und außerdem langsam, dann passiert nichts anderes als bei einem nicht-reentrantes VI: ein neuer Scheifendurchlauf findet erst statt, wenn alles in der Schleife - und dazu gehört auch das reentrante VI - abgearbeitet ist. Von der Erzeugung neuer Clones bei dieser Gelegenheit kann überhaupt keine Rede sein und auch nicht vom Zumüllen des Speichers.
Denselben Efekt wie mit einem reentranten VI erreicht man, wenn man mehrere identisch Kopien des Sub-Vis mit unterschiedlichem Namen erzeugt und jede Kopie im Programm nur ein mal verwendet. Nachteile hätte das nur bei der Versionspflege und im größeren Speicherbedarf auf der Harddisk.


Wann sind reentrante Sub-VI sinnvoll oder sogar notwendig?
Fall 1:
In eine Schleife laufen 10 identisch Sub-Vi parallel, und in jedem Sub-Vi gibt es Wartezeiten. Bei normalen SUB-Vi ist die Schleifendurchlaufzeit (wenn man mal die sonstigen zeiten vernachlässigt) gleich der Summe aller Wartezeiten, bei reenranten VI ist die Schleifendurclaufzet nur gleich der längten dieser 10 Zeiten
Fall 2:
Wenn das Sub-Vi nicht initialisierte Schleifen hat, dann braucht jedes Ikon seinen eigenen Datenbereich. Beispiel siehe unten: Zwei Punkt-zu-Punkt Tiefpassfilter mit den Zeitkonstanten 10 bzw. 20 Datenpunkten werden parallel betrieben. Wenn das Tiefpass-VI nicht reentrant ist, funktioniert das nicht, weil es insgesmat nur ein Memoryelement gibt. Es braucht aber jeder Filter seinen eigenen Speicher.
Fall 3:
Rekursiver Aufruf eines VI, d.h. Aufruf des Vi abc.vi innerhalb des VI abc.vi. Das kenne ich allerdings nicht aus eigener Praxis, aber hier - und nur hier - kann man sich ein Zumüllen des Speichers tatsächlich denken, bei entsprechender Tiefe der Rekursion.


Angehängte Datei(en) Thumbnail(s)
   
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Antwort schreiben 


Nachrichten in diesem Thema
Reentrance - eg - 18.10.2006, 22:20
Reentrance - A.Berndsen - 19.10.2006, 07:26
Reentrance - eg - 19.10.2006, 10:05
Reentrance - Svenni - 19.10.2006, 17:00
Reentrance - jg - 19.10.2006, 19:37
Reentrance - eg - 19.10.2006, 22:51
Reentrance - eg - 19.10.2006, 23:26
Reentrance - jg - 20.10.2006, 07:47
Reentrance - cb - 20.10.2006, 10:19
Reentrance - eg - 20.10.2006, 16:06
Reentrance - cb - 20.10.2006, 18:13
Reentrance - eg - 21.10.2006, 11:44
Reentrance - thomas.sandrisser - 21.10.2006, 15:05
Reentrance - Lucki - 22.10.2006 00:32
Reentrance - cb - 22.10.2006, 09:32
Reentrance - Lucki - 22.10.2006, 11:00
Reentrance - cb - 22.10.2006, 17:58

Gehe zu: