42#ifdef _RWSTD_THREAD_ONCE
48__rw_once (__rw_once_t *once,
void (*
func)())
52 return _RWSTD_THREAD_ONCE (once,
func);
56#elif defined (_RWSTD_NO_ATOMIC_OPS) && defined (_RWSTD_POSIX_THREADS)
62__rw_once (__rw_once_t *once,
void (*
func)())
74 if (-1 == once->_C_init) {
76 const int result = pthread_mutex_lock (&once->_C_mutex);
80 if (-1 == once->_C_init) {
89 pthread_mutex_unlock (&once->_C_mutex);
96 pthread_mutex_unlock (&once->_C_mutex);
110#elif defined (_RWSTD_REENTRANT)
116__rw_once (__rw_once_t *once,
void (*
func)())
119__rw_once (__rw_once_t *once,
void (*
func)()
throw (...))
throw (...)
124 volatile int &
init = once->_C_init;
152 for (
int loop = 0;
init < 1000; ++loop) {
175__rw_once (__rw_once_t *once,
void (*
func)())
185 if (once->_C_init == -1) {
#define _RWSTD_ATOMIC_PREINCREMENT(x, ignore)
#define _RWSTD_NAMESPACE(name)
#define _RWSTD_ATOMIC_PREDECREMENT(x, ignore)
#define _RWSTD_ASSERT(ignore)
#define _RWSTD_CONST_CAST(T, x)
#define _RWSTD_THREAD_YIELD()