⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 guard_test.cpp

📁 ACE自适配通信环境(ADAPTIVE Communication Environment)是可以自由使用、开放源码的面向对象(OO)框架(Framework)
💻 CPP
字号:
// guard_test.cpp,v 1.7 2004/05/07 21:33:02 shuston Exp#define  ACE_BUILD_SVC_DLL#include "ace/Guard_T.h"#include "ace/Log_Msg.h"#include "Performance_Test_Options.h"#include "Benchmark_Performance.h"ACE_RCSID(Synch_Benchmarks, mutex_test, "guard_test.cpp,v 1.7 2004/05/07 21:33:02 shuston Exp")#if defined (ACE_HAS_THREADS)class ACE_Svc_Export Guard_Test : public Benchmark_Performance{public:  enum  {                             // svc.conf options    TEST_ACE_GUARD,             // -g    TEST_ACE_THREAD_MUTEX_GUARD // -t  };  virtual int svc (void);  virtual int init (int, ACE_TCHAR *[]);  void test_guard (int);#if defined (ACE_USES_OBSOLETE_GUARD_CLASSES)  void test_thread_guard (int);#endif /* ACE_USES_OBSOLETE_GUARD_CLASSES */private:  static int guard_type_;  static ACE_Thread_Mutex mutex_;};int Guard_Test::guard_type_ = Guard_Test::TEST_ACE_GUARD;ACE_Thread_Mutex Guard_Test::mutex_;intGuard_Test::init (int argc, ACE_TCHAR *argv[]){  ACE_Get_Opt getopt (argc, argv, ACE_TEXT("gt"));  int c;  while ((c = getopt()) != -1)    {      switch (c)        {#if defined (ACE_USES_OBSOLETE_GUARD_CLASSES)        case 't':          Guard_Test::guard_type_ = Guard_Test::TEST_ACE_THREAD_MUTEX_GUARD;          break;#endif /* ACE_USES_OBSOLETE_GUARD_CLASSES */        case 'g':          Guard_Test::guard_type_ = Guard_Test::TEST_ACE_GUARD;          break;        default:          ACE_ERROR_RETURN ((LM_ERROR,                             "Invalid option\n"), -1);        }    }  return 0;}intGuard_Test::svc (void){  // Extract out the unique thread-specific value to be used as an  // index...  int ni = this->thr_id ();  synch_count = 2;  switch (Guard_Test::guard_type_)    {    case Guard_Test::TEST_ACE_GUARD:      this->test_guard (ni);      break;#if defined (ACE_USES_OBSOLETE_GUARD_CLASSES)    case Guard_Test::TEST_ACE_THREAD_MUTEX_GUARD:      this->test_thread_guard (ni);      break;#endif /* ACE_USES_OBSOLETE_GUARD_CLASSES */    default:      return -1;    }  return 0;}voidGuard_Test::test_guard (int ni){  while (!this->done ())    {      {        ACE_GUARD (ACE_Thread_Mutex, _ace_mon, Guard_Test::mutex_);        performance_test_options.thr_work_count[ni]++;        buffer++;      }    }}#if defined (ACE_USES_OBSOLETE_GUARD_CLASSES)# define ACE_THREAD_GUARD(OBJ,LOCK) \  ACE_Thread_Mutex_Guard OBJ (LOCK); \    if (OBJ.locked () == 0) return;voidGuard_Test::test_thread_guard (int ni){  while (!this->done ())    {      {        ACE_THREAD_GUARD (_ace_mon, Guard_Test::mutex_);        performance_test_options.thr_work_count[ni]++;        buffer++;      }    }}#endif /* ACE_USES_OBSOLETE_GUARD_CLASSES */ACE_SVC_FACTORY_DECLARE (Guard_Test)ACE_SVC_FACTORY_DEFINE  (Guard_Test)// ACE_Service_Object_Type mut (&mutex_test, "Guard_Test");#endif /* ACE_HAS_THREADS */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -