mutex_test.cpp
来自「ace开发环境 用来开发网络程序 其运用了设计模式、多平台、C++等多种知识」· C++ 代码 · 共 206 行
CPP
206 行
// $Id: mutex_test.cpp 72203 2006-04-20 09:59:58Z jwillemsen $#define ACE_BUILD_SVC_DLL#include "Baseline_Test.h"# if defined (ACE_HAS_THREADS)#include "ace/Log_Msg.h"#include "ace/Token.h"#include "ace/Process_Mutex.h"#include "ace/RW_Mutex.h"#include "ace/RW_Process_Mutex.h"#include "ace/RW_Thread_Mutex.h"#include "ace/Lock_Adapter_T.h"#include "ace/Recursive_Thread_Mutex.h"#include "ace/Semaphore.h"#include "ace/Null_Semaphore.h"#include "ace/Process_Semaphore.h"template<class LOCK>class ACE_Svc_Export Baseline_Lock_Test : public Baseline_Test_Base{public: virtual int acquire (); virtual int release (); // These two method are used to test try_acquire performance. virtual int test_acquire_release (); virtual int test_try_lock (); // Real test methods.private: LOCK lock_; //};template<class LOCK> intBaseline_Lock_Test<LOCK>::acquire (){ int retv = 0; switch (this->what_) { case TEST_READLOCK: retv = this->lock_.acquire_read (); break; case TEST_WRITELOCK: retv = this->lock_.acquire_write (); break; case TEST_LOCK: default: retv = this->lock_.acquire (); break; } return retv;}template<class LOCK> intBaseline_Lock_Test<LOCK>::release (){ return this->lock_.release ();}template<class LOCK> intBaseline_Lock_Test<LOCK>::test_acquire_release (){ baseline_options.start_inc_timer (); switch (this->what_) { case TEST_READLOCK: for (; baseline_options.inc_loop_counter () ; ) { this->lock_.acquire_read (); this->lock_.release (); } break; case TEST_WRITELOCK: for (; baseline_options.inc_loop_counter () ; ) { this->lock_.acquire_write (); this->lock_.release (); } break; case TEST_LOCK: default: for (; baseline_options.inc_loop_counter () ; ) { this->lock_.acquire (); this->lock_.release (); } break; } baseline_options.stop_inc_timer (); return 0;}template<class LOCK> intBaseline_Lock_Test<LOCK>::test_try_lock (){ baseline_options.start_inc_timer (); switch (this->what_) { case TEST_READLOCK: for (; baseline_options.inc_loop_counter () ; ) this->lock_.tryacquire_read (); // This should always fail. break; case TEST_WRITELOCK: for (; baseline_options.inc_loop_counter () ; ) this->lock_.tryacquire_write (); // This should always fail. break; case TEST_LOCK: default: for (; baseline_options.inc_loop_counter () ; ) this->lock_.tryacquire (); // This should always fail. break; } for (; baseline_options.inc_loop_counter () ; ) this->lock_.tryacquire (); // This should always fail. baseline_options.stop_inc_timer (); return 0;}typedef Baseline_Lock_Test<ACE_Thread_Mutex> Baseline_Mutex_Test;ACE_SVC_FACTORY_DECLARE (Baseline_Mutex_Test)ACE_SVC_FACTORY_DEFINE (Baseline_Mutex_Test)typedef Baseline_Lock_Test<ACE_RW_Thread_Mutex> Baseline_RW_Thread_Mutex_Test;ACE_SVC_FACTORY_DECLARE (Baseline_RW_Thread_Mutex_Test)ACE_SVC_FACTORY_DEFINE (Baseline_RW_Thread_Mutex_Test)typedef Baseline_Lock_Test<ACE_RW_Mutex> Baseline_RW_Mutex_Test;ACE_SVC_FACTORY_DECLARE (Baseline_RW_Mutex_Test)ACE_SVC_FACTORY_DEFINE (Baseline_RW_Mutex_Test)typedef Baseline_Lock_Test<ACE_Process_Mutex> Baseline_Process_Mutex_Test;ACE_SVC_FACTORY_DECLARE (Baseline_Process_Mutex_Test)ACE_SVC_FACTORY_DEFINE (Baseline_Process_Mutex_Test)typedef Baseline_Lock_Test<ACE_RW_Process_Mutex> Baseline_RW_Process_Mutex_Test;ACE_SVC_FACTORY_DECLARE (Baseline_RW_Process_Mutex_Test)ACE_SVC_FACTORY_DEFINE (Baseline_RW_Process_Mutex_Test)typedef Baseline_Lock_Test<ACE_Null_Mutex> Baseline_Null_Mutex_Test;ACE_SVC_FACTORY_DECLARE (Baseline_Null_Mutex_Test)ACE_SVC_FACTORY_DEFINE (Baseline_Null_Mutex_Test)typedef Baseline_Lock_Test< ACE_Lock_Adapter<ACE_Null_Mutex> > Baseline_Adaptive_Null_Mutex_Test;ACE_SVC_FACTORY_DECLARE (Baseline_Adaptive_Null_Mutex_Test)ACE_SVC_FACTORY_DEFINE (Baseline_Adaptive_Null_Mutex_Test)typedef Baseline_Lock_Test<ACE_Recursive_Thread_Mutex> Baseline_Recursive_Mutex_Test;ACE_SVC_FACTORY_DECLARE (Baseline_Recursive_Mutex_Test)ACE_SVC_FACTORY_DEFINE (Baseline_Recursive_Mutex_Test)typedef Baseline_Lock_Test< ACE_Lock_Adapter<ACE_Thread_Mutex> > Baseline_Adaptive_Mutex_Test;ACE_SVC_FACTORY_DECLARE (Baseline_Adaptive_Mutex_Test)ACE_SVC_FACTORY_DEFINE (Baseline_Adaptive_Mutex_Test)typedef Baseline_Lock_Test< ACE_Lock_Adapter<ACE_RW_Mutex> > Baseline_Adaptive_RW_Mutex_Test;ACE_SVC_FACTORY_DECLARE (Baseline_Adaptive_RW_Mutex_Test)ACE_SVC_FACTORY_DEFINE (Baseline_Adaptive_RW_Mutex_Test)typedef Baseline_Lock_Test< ACE_Lock_Adapter<ACE_Recursive_Thread_Mutex> > Baseline_Adaptive_Recursive_Mutex_Test;ACE_SVC_FACTORY_DECLARE (Baseline_Adaptive_Recursive_Mutex_Test)ACE_SVC_FACTORY_DEFINE (Baseline_Adaptive_Recursive_Mutex_Test)typedef Baseline_Lock_Test<ACE_Semaphore> Baseline_Semaphore_Test;ACE_SVC_FACTORY_DECLARE (Baseline_Semaphore_Test)ACE_SVC_FACTORY_DEFINE (Baseline_Semaphore_Test)typedef Baseline_Lock_Test<ACE_Semaphore> Baseline_Process_Semaphore_Test;ACE_SVC_FACTORY_DECLARE (Baseline_Process_Semaphore_Test)ACE_SVC_FACTORY_DEFINE (Baseline_Process_Semaphore_Test)typedef Baseline_Lock_Test<ACE_Null_Semaphore> Baseline_Null_Semaphore_Test;ACE_SVC_FACTORY_DECLARE (Baseline_Null_Semaphore_Test)ACE_SVC_FACTORY_DEFINE (Baseline_Null_Semaphore_Test)typedef Baseline_Lock_Test<ACE_Token> Baseline_Token_Test;ACE_SVC_FACTORY_DECLARE (Baseline_Token_Test)ACE_SVC_FACTORY_DEFINE (Baseline_Token_Test)#endif /* ACE_HAS_THREADS */
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?