All you really need to do is make the subVI is
not set to be reentrant. (VI Properties>Execution, make sure 'Reentrant Execution' is unchecked)
Having it not be reentrant will only let it be called from one location at a time. So the first instance that gets called will block the rest of them from running until it completes.
Take a look at the attached example. The subVI is simply a wrapper around the 'Wait' function so I can set it's reentrant property. The SubVI is used in both loops. Run 'Main.vi' and note the 'Wait Time(ms)' indicators will show 3000 ms between executions, even though the waits are 1000 and 2000. This is showing the subVI can only be run from one calling instance at a time. This is why we get a total time between executions of the subVI of 3000 ms.
Open the subVI and change it to reentrant execution (VI Properties>Execution, make sure 'Reentrant Execution' is checked). Save and close the subVI and run the main again. The wait times will now be 1000 and 2000 respectivly. This is showing that a separate copy of the subVI is being called for each instance of it.
Ed

Ed Dickens - Certified LabVIEW Architect
Lockheed Martin Space
Using the Abort button to stop your VI is like using a tree to stop your car. It works, but there may be consequences.