Node:Reentrancy, Next:Useful Macros and Constants, Previous:Memory Management, Up:GMP Basics
GMP is reentrant and thread-safe, with some exceptions:
--enable-alloca=malloc-notreentrant (or with
--enable-alloca=notreentrant when alloca is not available),
then naturally GMP is not reentrant.
mpf_set_default_prec and mpf_init use a global variable for the
selected precision. mpf_init2 can be used instead.
mpz_random and the other old random number functions use a global
random state and are hence not reentrant. The newer random number functions
that accept a gmp_randstate_t parameter can be used instead.
mp_set_memory_functions uses global variables to store the selected
memory allocation functions.
mp_set_memory_functions (or malloc and friends by default) are
not reentrant, then GMP will not be reentrant either.
fwrite are not reentrant then the
GMP I/O functions using them will not be reentrant either.
gmp_randstate_t simultaneously,
since this involves an update of that variable.
<ctype.h> macros use per-file static
variables and may not be reentrant, depending whether the compiler optimizes
away fetches from them. The GMP text-based input functions are affected.