Further Examples
In the following piece of C code, neither f nor g functions are reentrant.
In the above, f depends on a non-constant global variable g_var; thus, if two threads execute it and access g_var concurrently, then the result varies depending on the timing of the execution. Hence, f is not reentrant. Neither is g; it calls f, which is not reentrant.
These slightly altered versions are reentrant:
int f(int i) { return i + 2; } int g(int i) { return f(i) + 2; }In the following piece of C code, the function is thread-safe, but not reentrant.
int function { mutex_lock; ... function body ... mutex_unlock; }In the above, function can be called by different threads without any problem. But if the function is used in a reentrant interrupt handler and a second interrupt arises inside the function, the second routine will hang forever. As interrupt servicing can disable other interrupts, the whole system could suffer.
Read more about this topic: Reentrancy (computing)
Famous quotes containing the word examples:
“It is hardly to be believed how spiritual reflections when mixed with a little physics can hold peoples attention and give them a livelier idea of God than do the often ill-applied examples of his wrath.”
—G.C. (Georg Christoph)
“Histories are more full of examples of the fidelity of dogs than of friends.”
—Alexander Pope (16881744)