Is the SMC library thread-safe?
We have aimed to make the BeBOP Utility Library thread-safe, by using certain POSIX Threads (Pthreads) constructions. Thread safety is enabled by default; you can disable it by setting USE_PTHREADS=0 on the appropriate line of bebop_make/options, and rebuilding all the libraries from scratch. Among other features, logging (see bebop/util/log.h) and random number generation (see bebop/util/random_number.h) are protected via serialization; this is slow but produces correct and predictable results. (Note that since logging is serialized, the logger will not be helpful for catching threading bugs.) We also avoid calling non-thread-safe standard C functions, such as strtok(). Pthreads is a POSIX-standard threading library that works on Unix-like operating systems such as GNU/Linux, MacOS X, Solaris and IBM’s AIX. There is some support for Pthreads on Cygwin; see for example the Cygwin API Reference, which documents the functions in the Pthreads API that Cygwin implements. You can find a Pth