#include "threadpool/atomic_helpers.h" #include #ifdef USE_PTHREAD_ATOMIC_LOCK // Print a warning if we defaulted to use pthreads for atomic operations // This can decrease the performance of atomic operations // We print the message here so it is only printed once #warning using pthreads for atomic operations, this may affect performance #endif namespace AtomicOperations { #ifdef USE_PTHREAD_ATOMIC_LOCK pthread_mutex_t atomic_pthread_lock; static pthread_mutexattr_t threadpool_global_attr; static int create_atomic_pthread_lock( ) { pthread_mutexattr_init(&threadpool_global_attr); int error = pthread_mutex_init(&atomic_pthread_lock,&threadpool_global_attr); if ( error != 0 ) { throw std::logic_error("Error initializing mutex:"); } return error; } int atomic_pthread_lock_initialized = create_atomic_pthread_lock(); #endif } // AtomicOperations namespace