41#ifndef _QX_MODE_RELEASE
42#if _QX_USE_MEM_LEAK_DETECTION
51# if !defined(_NOTHREADS)
52# if !defined(_WIN32THREADS) && \
53 (defined(_WIN32) && defined(_MT))
57# elif !defined(_PTHREADS) && \
66# if !defined(_PTHREADS) && !defined(_WIN32THREADS) && !defined(_NOTHREADS)
70# if defined(_NOTHREADS)
71# if defined(_PTHREADS) || defined(_WIN32THREADS)
73# error "Cannot define multi-threaded mode with -D_NOTHREADS"
74# if defined(__MINGW32__) && defined(_WIN32THREADS) && !defined(_MT)
75# error "Be sure to specify -mthreads with -D_WIN32THREADS"
80# ifndef _FAST_MUTEX_CHECK_INITIALIZATION
89# define _FAST_MUTEX_CHECK_INITIALIZATION 1
92# if defined(_PTHREADS) && defined(_WIN32THREADS)
98#ifndef _QX_MODE_RELEASE
103# define _FAST_MUTEX_ASSERT(_Expr, _Msg) \
105 fprintf(stderr, "fast_mutex::%s\n", _Msg); \
110# define _FAST_MUTEX_ASSERT(_Expr, _Msg) \
121# define __VOLATILE volatile
130 pthread_mutex_t _M_mtx_impl;
131# if _FAST_MUTEX_CHECK_INITIALIZATION
134#ifndef _QX_MODE_RELEASE
141#ifndef _QX_MODE_RELEASE
147 ::pthread_mutex_init(&_M_mtx_impl, NULL);
148# if _FAST_MUTEX_CHECK_INITIALIZATION
149 _M_initialized =
true;
155# if _FAST_MUTEX_CHECK_INITIALIZATION
156 _M_initialized =
false;
158 ::pthread_mutex_destroy(&_M_mtx_impl);
162# if _FAST_MUTEX_CHECK_INITIALIZATION
166 ::pthread_mutex_lock(&_M_mtx_impl);
167#ifndef _QX_MODE_RELEASE
181# if _FAST_MUTEX_CHECK_INITIALIZATION
185#ifndef _QX_MODE_RELEASE
191 ::pthread_mutex_unlock(&_M_mtx_impl);
207# define __VOLATILE volatile
216 CRITICAL_SECTION _M_mtx_impl;
217# if _FAST_MUTEX_CHECK_INITIALIZATION
220#ifndef _QX_MODE_RELEASE
227#ifndef _QX_MODE_RELEASE
233 ::InitializeCriticalSection(&_M_mtx_impl);
234# if _FAST_MUTEX_CHECK_INITIALIZATION
235 _M_initialized =
true;
241# if _FAST_MUTEX_CHECK_INITIALIZATION
242 _M_initialized =
false;
244 ::DeleteCriticalSection(&_M_mtx_impl);
248# if _FAST_MUTEX_CHECK_INITIALIZATION
252 ::EnterCriticalSection(&_M_mtx_impl);
253#ifndef _QX_MODE_RELEASE
262# if _FAST_MUTEX_CHECK_INITIALIZATION
266#ifndef _QX_MODE_RELEASE
272 ::LeaveCriticalSection(&_M_mtx_impl);
296#ifndef _QX_MODE_RELEASE
303#ifndef _QX_MODE_RELEASE
316#ifndef _QX_MODE_RELEASE
325#ifndef _QX_MODE_RELEASE
fast_mutex_autolock(const fast_mutex_autolock &)
fast_mutex_autolock(fast_mutex &__mtx)
fast_mutex_autolock & operator=(const fast_mutex_autolock &)
fast_mutex & operator=(const fast_mutex &)
fast_mutex(const fast_mutex &)
#define _FAST_MUTEX_ASSERT(_Expr, _Msg)
Root namespace for all QxOrm library features.