conds_test.cpp

来自「ace开发环境 用来开发网络程序 其运用了设计模式、多平台、C++等多种知识」· C++ 代码 · 共 73 行

CPP
73
字号
// $Id: conds_test.cpp 79356 2007-08-15 15:58:44Z sowayaa $#define  ACE_BUILD_SVC_DLL#include "Performance_Test_Options.h"#include "Benchmark_Performance.h"ACE_RCSID(Synch_Benchmarks, conds_test, "$Id: conds_test.cpp 79356 2007-08-15 15:58:44Z sowayaa $")#if defined (ACE_HAS_THREADS)class ACE_Svc_Export Cond_Signal_Test : public Benchmark_Performance{public:  virtual int svc (void);private:  static ACE_Thread_Mutex mutex;  static int resources;  static ACE_Condition_Thread_Mutex notfull;  static ACE_Condition_Thread_Mutex notempty;};ACE_Thread_Mutex Cond_Signal_Test::mutex;int Cond_Signal_Test::resources;ACE_Condition_Thread_Mutex Cond_Signal_Test::notfull (Cond_Signal_Test::mutex);ACE_Condition_Thread_Mutex Cond_Signal_Test::notempty (Cond_Signal_Test::mutex);intCond_Signal_Test::svc (void){  int ni = this->thr_id ();  synch_count = 2;  // This is a horrible hack and only works for Solaris threads.  This  // clearly needs to change...  if (ni == 4)    while (!this->done ())      {        mutex.acquire ();        while (resources > 0)        notfull.wait ();        performance_test_options.thr_work_count[ni]++;        resources = performance_test_options.thr_count () - 1;        buffer++;        notempty.signal ();        mutex.release ();      }  else    while (!this->done ())      {        mutex.acquire ();        while (resources == 0)        notempty.wait ();        performance_test_options.thr_work_count[ni]++;        buffer++;        if (--resources == 0)        notfull.signal ();        mutex.release ();      }  /* NOTREACHED */  return 0;}ACE_SVC_FACTORY_DECLARE (Cond_Signal_Test)ACE_SVC_FACTORY_DEFINE  (Cond_Signal_Test)// ACE_Service_Object_Type cst (&cond_signal_test, "Condition_Signal_Test");#endif /* ACE_HAS_THREADS */

⌨️ 快捷键说明

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