17 #ifndef __TBB__x86_eliding_mutex_impl_H 18 #define __TBB__x86_eliding_mutex_impl_H 20 #ifndef __TBB_spin_mutex_H 21 #error Do not #include this internal file directly; use public TBB headers instead. 24 #if ( __TBB_x86_32 || __TBB_x86_64 ) 27 namespace interface7 {
30 template<
typename Mutex,
bool is_rw>
44 friend class padded_mutex<x86_eliding_mutex, false>;
49 x86_eliding_mutex() : flag(0) {}
53 #if __TBB_USE_X86_ELIDING_MUTEX || __TBB_GCC_VERSION < 40000 65 x86_eliding_mutex* my_mutex;
69 scoped_lock() : my_mutex(NULL) {}
72 scoped_lock( x86_eliding_mutex& m ) : my_mutex(NULL) {
acquire(m); }
75 void acquire( x86_eliding_mutex& m ) {
84 bool try_acquire( x86_eliding_mutex& m ) {
87 bool result = m.try_lock();
96 __TBB_ASSERT( my_mutex,
"release on scoped_lock that is not holding a lock" );
109 #if __TBB_USE_X86_ELIDING_MUTEX || __TBB_GCC_VERSION < 40000 115 static const bool is_rw_mutex =
false;
116 static const bool is_recursive_mutex =
false;
117 static const bool is_fair_mutex =
false;
123 __TBB_LockByteElided(flag);
129 return __TBB_TryLockByteElided(flag);
134 __TBB_UnlockByteElided( flag );
__TBB_atomic __TBB_Flag __TBB_atomic_flag
Base class for types that should not be copied or assigned.
#define __TBB_ASSERT(predicate, comment)
No-op version of __TBB_ASSERT.
void const char const char int ITT_FORMAT __itt_group_sync x void const char ITT_FORMAT __itt_group_sync s void ITT_FORMAT __itt_group_sync p void ITT_FORMAT p void ITT_FORMAT p no args __itt_suppress_mode_t unsigned int void size_t ITT_FORMAT d void ITT_FORMAT p void ITT_FORMAT p __itt_model_site __itt_model_site_instance ITT_FORMAT p __itt_model_task __itt_model_task_instance ITT_FORMAT p void * lock