LabVIEW

cancel
Showing results for 
Search instead for 
Did you mean: 

Calling a reentrant sub-vi from a reentrant vi

I need to communicate with multiple identical instruments on different serial ports simultaneously. I have a set of vis that are the building blocks for communication, and they are all reentrant. I then have a top-level reentrant vi that is called multiple times with different VISA resources as inputs. That works fine, and I can see the multiple clones running, but the sub-vi calls from within that one are not  being called in a reentrant manner, so each instance still has to wait for the others. I read that in older versions of LabVIEW you could not call a reentrant sub-vi from a reentrant vi. Is that still true in 8.6? If so, all my work to make these nice little building block sub-vis seems to be a waste. Do I have to use one reentrant vi that has all the sub-vi stuff unbundled and flatened out onto a large block diagram? If I replace sub-vi calls with reentrant calls by reference will that work? It is messier than a simple sub-vi call but not as bad as unbundling everything.
0 Kudos
Message 1 of 3
(2,521 Views)

Hi Richard S....,

it should be possible in the way you want it. As far as i know it was already possible in LabVIEW 7.1 to call reentrant vi's from reentrant vi's. Maybe you don't see it as clone, but you can set the execute property to reentrant.

 

Hope it helps.

Mike

0 Kudos
Message 2 of 3
(2,519 Views)

Mike,

  Thanks for the update. Knowing that it is possible motivated me to dig deeper into why it wasn't working for me. It turns out that I neglected to mark one of my many sub-vis as reentrant and it was the bottleneck. Now that I have the whole heirarchy set to be reentrant everything seems to be working fine.

0 Kudos
Message 3 of 3
(2,512 Views)