38#ifndef BLOCXX_THREAD_ONCE_HPP_INCLUDE_GUARD_
39#define BLOCXX_THREAD_ONCE_HPP_INCLUDE_GUARD_
40#include "blocxx/BLOCXX_config.h"
43#if defined(BLOCXX_USE_PTHREAD)
48#elif defined(BLOCXX_WIN32)
49#define WIN32_LEAN_AND_MEAN
57#ifndef PTHREAD_MUTEX_INITIALIZER
58#define PTHREAD_MUTEX_INITIALIZER {NULL, 0, 0}
62#if defined(BLOCXX_USE_PTHREAD)
66 volatile ::sig_atomic_t
flag;
70#define BLOCXX_ONCE_INIT {0, PTHREAD_MUTEX_INITIALIZER}
72#elif defined(BLOCXX_WIN32)
75#define BLOCXX_ONCE_INIT 0
85template <
typename FuncT>
90#if defined(BLOCXX_USE_PTHREAD)
132template <
typename FuncT>
149#if defined(BLOCXX_WIN32)
151template <
typename FuncT>
#define BLOCXX_ASSERT(CON)
BLOCXX_ASSERT works similar to the assert() macro, but instead of calling abort(),...
void BLOCXX_COMMON_API callOnce(OnceFlag &flag, FuncT F)
The first time callOnce is called with a given onceFlag argument, it calls func with no argument and ...
bool operator==(const Array< T > &x, const Array< T > &y)
void readWriteMemoryBarrier()
This function is solely for the use of libblocxx threading primitives.