void TestTryAcquire_OneThread( const char * mutex_name ) { M tested_mutex; typename M::scoped_lock lock1; if( lock1.try_acquire(tested_mutex) ) lock1.release(); else REPORT("ERROR for %s: try_acquire failed though it should not\n", mutex_name); { if( M::is_recursive_mutex ) { typename M::scoped_lock lock2(tested_mutex); if( lock1.try_acquire(tested_mutex) ) lock1.release(); else REPORT("ERROR for %s: try_acquire on recursive lock failed though it should not\n", mutex_name); //windows.. -- both are recursive } else { typename M::scoped_lock lock2(tested_mutex); if( lock1.try_acquire(tested_mutex) ) REPORT("ERROR for %s: try_acquire succeeded though it should not\n", mutex_name); } } if( lock1.try_acquire(tested_mutex) ) lock1.release(); else REPORT("ERROR for %s: try_acquire failed though it should not\n", mutex_name); }
void TestTryAcquire_OneThread( const char * mutex_name ) { M tested_mutex; typename M::scoped_lock lock1; if( lock1.try_acquire(tested_mutex) ) lock1.release(); else STD::printf("ERROR for %s: try_acquire failed though it should not\n", mutex_name); { typename M::scoped_lock lock2(tested_mutex); if( lock1.try_acquire(tested_mutex) ) STD::printf("ERROR for %s: try_acquire succeeded though it should not\n", mutex_name); } if( lock1.try_acquire(tested_mutex) ) lock1.release(); else STD::printf("ERROR for %s: try_acquire failed though it should not\n", mutex_name); }
void TestTryAcquireReader_OneThread( const char * mutex_name ) { M tested_mutex; typename M::scoped_lock lock1; if( M::is_rw_mutex ) { if( lock1.try_acquire(tested_mutex, false) ) lock1.release(); else REPORT("ERROR for %s: try_acquire failed though it should not\n", mutex_name); { typename M::scoped_lock lock2(tested_mutex, false); if( lock1.try_acquire(tested_mutex) ) REPORT("ERROR for %s: try_acquire succeeded though it should not\n", mutex_name); lock2.release(); lock2.acquire(tested_mutex, true); if( lock1.try_acquire(tested_mutex, false) ) REPORT("ERROR for %s: try_acquire succeeded though it should not\n", mutex_name); } if( lock1.try_acquire(tested_mutex, false) ) lock1.release(); else REPORT("ERROR for %s: try_acquire failed though it should not\n", mutex_name); } }