LabVIEW

cancel
Showing results for 
Search instead for 
Did you mean: 

do all the sub VIs in a reentrant VI need to be reentrant?

0 Kudos
Message 11 of 14
(1,576 Views)
Please post a zip or llb of a demo that demonstrates your calls and I will comment.

This get to hard to talk through.

Ben
Retired Senior Automation Systems Architect with Data Science Automation LabVIEW Champion Knight of NI and Prepper LinkedIn Profile YouTube Channel
0 Kudos
Message 12 of 14
(1,092 Views)
Hi Marce,

Essentially to determine if you want to make the subVIs reentrant, you want to determine if they are thread-safe:
  1. Does not have global storage data (global variables, files in disk, etc) or protect any global storage with semaphores/mutexes

  2. Does not access hardware (registers)

  3. Does not call functions/shared libraries/drivers that are not reentrant or thread-safe


The link in my previous post was to clarify the fact that if you do have information that is stored in the subVI, setting the execution to non-reentrant will cause problems with data being overwritten incorrectly. By making the subVIs reentrant, each subVI will have its own dataspace and will be a separate instance from the calling VI’s point of view.

Lemme know if you have other questions.

Kileen
0 Kudos
Message 13 of 14
(1,061 Views)
Hello everybody,

Let me go back to the Reentrant issue.

I have a SubVi that should be reentrant in the final EXE application but I don't want it to be reentrant when I debug the program. I use a Boolean called SIMULATION to set several properties of my Vis differently when I debug and tried to use it also to set the reentrant property of the SubVi. Then I found out that LV won't let me change that property because the SubVi is already in memory.

Does anybody have any suggestion how to change the reentrant property in my case?

Thanks,

Marce
0 Kudos
Message 14 of 14
(1,034 Views)