re-entrant
<programming> Used to describe code which can have multiple simultaneous,
interleaved, or nested invocations which will not interfere with each other.
This is important for parallel processing, recursive functions or subroutines,
and interrupt handling.
It is usually easy to arrange for multiple invocations (e.g. calls to a
subroutine) to share one copy of the code and any read-only data but, for the
code to be re-entrant, each invocation must use its own copy of any modifiable
data (or synchronised access to shared data). This is most often achieved using
a stack and allocating local variables in a new stack frame for each invocation.
Alternatively, the caller may pass in a pointer to a block of memory which that
invocation can use (usually for outputting the result) or the code may allocate
some memory on a heap, especially if the data must survive after the routine
returns.
Re-entrant code is often found in system software, such as operating systems and
teleprocessing monitors. It is also a crucial component of multithreaded
programs where the term "thread-safe" is often used instead of "re-entrant".
(1996-12-21)
Nearby terms:
red wire « red zone « re-engineering « re-entrant
» refactoring » REFAL » REF-ARF
|