libffi is not completely thread-safe. However, many parts are,
and if you follow some simple rules, you can use it safely in a
multi-threaded program.
ffi_prep_cif may modify the ffi_type objects passed to
it. It is best to ensure that only a single thread prepares a given
ffi_cif at a time.
ffi_prep_cif may modify the size and
alignment of some types, depending on the chosen ABI. On these
platforms, if you switch between ABIs, you must ensure that there is
only one call to ffi_prep_cif at a time.
Currently the only affected platform is PowerPC and the only affected
type is long double.