9 #ifndef _LOG4CPP_THREADING_PTHREADS_HH
10 #define _LOG4CPP_THREADING_PTHREADS_HH
35 m_sem = semMCreate( SEM_Q_PRIORITY | SEM_INVERSION_SAFE );
39 STATUS result = semTake( m_sem, WAIT_FOREVER );
66 ::pthread_mutexattr_settype(&
mutexattr, PTHREAD_MUTEX_RECURSIVE);
71 ::pthread_mutex_lock(&
mutex);
75 ::pthread_mutex_unlock(&
mutex);
79 ::pthread_mutex_destroy(&
mutex);
110 template<
typename T>
class ThreadLocalDataHolder {
123 delete reinterpret_cast<T *
>(p);
131 ::pthread_key_delete(
_key);
135 return reinterpret_cast<T *
>(::pthread_getspecific(
_key));
143 ::pthread_setspecific(
_key, NULL);
153 ::pthread_setspecific(
_key, p);