/* It was found that on IPF inlining of __TBB_machine_lockbyte leads to serious performance regression with ICC 10.0. So keep it out-of-line. This code is copy-pasted from tbb_misc.cpp. */ extern "C" intptr_t __TBB_machine_lockbyte( volatile unsigned char& flag ) { if ( !__TBB_TryLockByte(flag) ) { tbb::internal::atomic_backoff b; do { b.pause(); } while ( !__TBB_TryLockByte(flag) ); } return 0; }
bool spin_mutex::scoped_lock::internal_try_acquire( spin_mutex& m ) { __TBB_ASSERT( !my_mutex, "already holding a lock on a spin_mutex" ); bool result = bool( __TBB_TryLockByte(m.flag) ); if( result ) { my_mutex = &m; ITT_NOTIFY(sync_acquired, &m); } return result; }