Thanks for the link, though I'm not sure it applies. 1... I'm not using RT things - there's not an RT board present. 2... <i>These shared resources include global variables, <b>non-reentrant subVIs</b>,...</i> -- So a non-reentrant subVI is a "shared resource".
3... <i>Priority inheritance allows the lower priority thread to temporarily =93inherit=94 the time-critical priority setting, long enough to finish using the shared resource and to remove the protection. Once the protection is removed, the lower priority thread resumes its original lower priority setting and is taken off of the processor.</i> --- I suppose the subVI could be a "shared resource", even though one of the sharers is not running. But if that's what is happening, then you are suggesting that the process of changing priorities up and back down adds 10 mSec to the execution time. --- However, the tester calls the thing 1000 times, so I suppose the extra 10 mSec is divided by 1000, so it's 10 uSec per call - that seems believeable. --- And since subroutine-priority avoids the scheduler altogether, it's not subject to this priority inversion. --- And when I made the subVI re-entrant, it's no longer a "shared resource" and is not subject to this priority inversion. --- OK, I'm convinced you're on the right track, assuming this note about RT applies to the plain LabVIEW as well.