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.