31 #ifndef PTLIB_CRITICALSECTION_H
32 #define PTLIB_CRITICALSECTION_H
36 #if defined(SOLARIS) && !defined(__GNUC__)
43 # if __GNUC__ >= 4 && __GNUC_MINOR__ >= 2
44 # include <ext/atomicity.h>
46 # include <bits/atomicity.h>
50 #if P_NEEDS_GNU_CXX_NAMESPACE
51 #define EXCHANGE_AND_ADD(v,i) __gnu_cxx::__exchange_and_add(v,i)
53 #define EXCHANGE_AND_ADD(v,i) __exchange_and_add(v,i)
56 #endif // P_HAS_ATOMIC_INT
105 inline void Enter() {
Wait(); }
110 inline void Leave() {
Signal(); }
119 #include "msos/ptlib/critsec.h"
133 #elif defined(_STLP_INTERNAL_THREADS_H) && defined(_STLP_ATOMIC_INCREMENT) && defined(_STLP_ATOMIC_DECREMENT)
135 #elif defined(SOLARIS) && !defined(__GNUC__)
137 #elif defined(__GNUC__) && P_HAS_ATOMIC_INT
251 __inline
operator bool()
const {
return m_value != 0; }
268 return strm << (b.
m_value != 0 ?
"true" :
"false");
273 #if defined(_WIN32) || defined(DOC_PLUS_PLUS)
281 #elif defined(_STLP_INTERNAL_THREADS_H) && defined(_STLP_ATOMIC_INCREMENT) && defined(_STLP_ATOMIC_DECREMENT)
289 #elif defined(SOLARIS) && !defined(__GNUC__)
297 #elif defined(__GNUC__) && P_HAS_ATOMIC_INT
316 #endif // PTLIB_CRITICALSECTION_H