43 lines
879 B
C
43 lines
879 B
C
|
///////////////////////////////////////////////////////////////////////////////
|
||
|
//
|
||
|
/// \file mythread.h
|
||
|
/// \brief Wrappers for threads
|
||
|
//
|
||
|
// Author: Lasse Collin
|
||
|
//
|
||
|
// This file has been put into the public domain.
|
||
|
// You can do whatever you want with this file.
|
||
|
//
|
||
|
///////////////////////////////////////////////////////////////////////////////
|
||
|
|
||
|
#include "sysdefs.h"
|
||
|
|
||
|
|
||
|
#ifdef HAVE_PTHREAD
|
||
|
# include <pthread.h>
|
||
|
|
||
|
# define mythread_once(func) \
|
||
|
do { \
|
||
|
static pthread_once_t once_ = PTHREAD_ONCE_INIT; \
|
||
|
pthread_once(&once_, &func); \
|
||
|
} while (0)
|
||
|
|
||
|
# define mythread_sigmask(how, set, oset) \
|
||
|
pthread_sigmask(how, set, oset)
|
||
|
|
||
|
#else
|
||
|
|
||
|
# define mythread_once(func) \
|
||
|
do { \
|
||
|
static bool once_ = false; \
|
||
|
if (!once_) { \
|
||
|
func(); \
|
||
|
once_ = true; \
|
||
|
} \
|
||
|
} while (0)
|
||
|
|
||
|
# define mythread_sigmask(how, set, oset) \
|
||
|
sigprocmask(how, set, oset)
|
||
|
|
||
|
#endif
|