diff options
Diffstat (limited to 'ACE/performance-tests/Synch-Benchmarks/Perf_Test/Adaptive_Lock_Performance_Test_Base.cpp')
-rw-r--r-- | ACE/performance-tests/Synch-Benchmarks/Perf_Test/Adaptive_Lock_Performance_Test_Base.cpp | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/ACE/performance-tests/Synch-Benchmarks/Perf_Test/Adaptive_Lock_Performance_Test_Base.cpp b/ACE/performance-tests/Synch-Benchmarks/Perf_Test/Adaptive_Lock_Performance_Test_Base.cpp new file mode 100644 index 00000000000..32ad7ea5431 --- /dev/null +++ b/ACE/performance-tests/Synch-Benchmarks/Perf_Test/Adaptive_Lock_Performance_Test_Base.cpp @@ -0,0 +1,48 @@ +// $Id$ + +#define ACE_BUILD_SVC_DLL +#include "Performance_Test_Options.h" +#include "Adaptive_Lock_Performance_Test_Base.h" + +ACE_RCSID(Synch_Benchmarks, Adaptive_Lock_Performance_Test_Base_, "$Id$") + +#if defined (ACE_HAS_THREADS) + +ACE_Lock *Adaptive_Lock_Performance_Test_Base::lock_ = 0; + +int +Adaptive_Lock_Performance_Test_Base::fini (void) +{ + delete Adaptive_Lock_Performance_Test_Base::lock_; + Adaptive_Lock_Performance_Test_Base::lock_ = 0; + return 0; +} + +int +Adaptive_Lock_Performance_Test_Base::svc (void) +{ + // Extract out the unique thread-specific value to be used as an + // index... + int ni = this->thr_id (); + synch_count = 2; + + while (!this->done ()) + { + Adaptive_Lock_Performance_Test_Base::lock_->acquire (); + performance_test_options.thr_work_count[ni]++; + buffer++; + Adaptive_Lock_Performance_Test_Base::lock_->release (); + } + /* NOTREACHED */ + return 0; +} + +int +Adaptive_Lock_Performance_Test_Base::set_lock (ACE_Lock *lock) +{ + delete Adaptive_Lock_Performance_Test_Base::lock_; + Adaptive_Lock_Performance_Test_Base::lock_ = lock; + return (Adaptive_Lock_Performance_Test_Base::lock_ != 0 ? 0 : -1); +} + +#endif /* ACE_HAS_THREADS */ |