An operation is "thread-safe" if it can be performed from multiple
threads safely, even if the calls happen simultaneously on multiple
threads.
An operation is re-entrant if it can be performed while the operation
is already in progress (perhaps in another context).
This is a stronger concept than thread-safety,
because the second attempt ...