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.

Reply via email to