diff options
Diffstat (limited to 'trunk/ACE/performance-tests/Synch-Benchmarks/Perf_Test/sema_test.cpp')
-rw-r--r-- | trunk/ACE/performance-tests/Synch-Benchmarks/Perf_Test/sema_test.cpp | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/trunk/ACE/performance-tests/Synch-Benchmarks/Perf_Test/sema_test.cpp b/trunk/ACE/performance-tests/Synch-Benchmarks/Perf_Test/sema_test.cpp new file mode 100644 index 00000000000..9f1d7657139 --- /dev/null +++ b/trunk/ACE/performance-tests/Synch-Benchmarks/Perf_Test/sema_test.cpp @@ -0,0 +1,45 @@ +// $Id$ + +#define ACE_BUILD_SVC_DLL +#include "Performance_Test_Options.h" +#include "Benchmark_Performance.h" +#include "ace/Semaphore.h" + +ACE_RCSID(Synch_Benchmarks, sema_test, "$Id$") + +#if defined (ACE_HAS_THREADS) + +class ACE_Svc_Export Sema_Test : public Benchmark_Performance +{ +public: + virtual int svc (void); + +private: + static ACE_Semaphore sema; +}; + +ACE_Semaphore Sema_Test::sema (1); + +int +Sema_Test::svc (void) +{ + int ni = this->thr_id (); + synch_count = 2; + + while (!this->done ()) + { + sema.acquire (); + performance_test_options.thr_work_count[ni]++; + buffer++; + sema.release (); + } + + /* NOTREACHED */ + return 0; +} + +ACE_SVC_FACTORY_DECLARE (Sema_Test) +ACE_SVC_FACTORY_DEFINE (Sema_Test) + +// ACE_Service_Object_Type semt (&sema_test, "Semaphore_Test"); +#endif /* ACE_HAS_THREADS */ |