} thread_status_t;
#ifdef HAVE_C11
-#define atomic_load_queue(p) __atomic_load_n(p, __ATOMIC_RELAXED)
-#define atomic_store_queue(p, v) __atomic_store_n(p, v, __ATOMIC_RELAXED)
+#define atomic_load_queue(p) __atomic_load_n(p, __ATOMIC_ACQUIRE)
+#define atomic_store_queue(p, v) __atomic_store_n(p, v, __ATOMIC_RELEASE)
#else
#define atomic_load_queue(p) (blas_queue_t*)(*(volatile blas_queue_t**)(p))
#define atomic_store_queue(p, v) (*(volatile blas_queue_t* volatile*)(p) = (v))
#ifdef SMP_SERVER
// Handle lazy re-init of the thread-pool after a POSIX fork
+ LOCK_COMMAND(&server_lock);
if (unlikely(blas_server_avail == 0)) blas_thread_init();
+ UNLOCK_COMMAND(&server_lock);
#endif
BLASLONG i = 0;
blas_queue_t *current = queue;