from
The Free On-line Dictionary of Computing (8 July 2008)
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)