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(); }
119 inline void Leave() {
Signal(); }
128 #include "msos/ptlib/critsec.h"
142 #elif defined(_STLP_INTERNAL_THREADS_H) && defined(_STLP_ATOMIC_INCREMENT) && defined(_STLP_ATOMIC_DECREMENT)
144 #elif defined(SOLARIS) && !defined(__GNUC__)
146 #elif defined(__GNUC__) && P_HAS_ATOMIC_INT
261 __inline
operator bool()
const {
return m_value != 0; }
279 return strm << (b.
m_value != 0 ?
"true" :
"false");
284 #if defined(_WIN32) || defined(DOC_PLUS_PLUS)
292 #elif defined(_STLP_INTERNAL_THREADS_H) && defined(_STLP_ATOMIC_INCREMENT) && defined(_STLP_ATOMIC_DECREMENT)
300 #elif defined(SOLARIS) && !defined(__GNUC__)
308 #elif defined(__GNUC__) && P_HAS_ATOMIC_INT
327 #endif // PTLIB_CRITICALSECTION_H