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

📄 client.cc

📁 支持组件模型CCM的开源中间件-mico
💻 CC
字号:
#include "simple.h"#include <CORBA.h>#include <mico/os-misc.h>                                                      #include <mico/util.h>                                                      #include <pthread.h>#include <sched.h>class doit1: public MICOMT::Thread {public:  void _run (void *arg);};class doit2: public MICOMT::Thread {public:  void _run (void *arg);};simple1_var s1;simple2_var s2;int loops;#define THRS  2//doit *th[THRS];doit1 *th1;doit2 *th2;char c[] = "+.*-#";int main (int argc, char **argv);void doit2::_run(void *v) {  char c = *(char *)v;   for (int i = 0; i < loops; i++)    {      if (( i % 1000 ) == 0) 	MICODebug::instance()->printer() << i << endl;      s1->func( c );      yield();    }}void doit1::_run(void *v) {  char c = *(char *)v;   for (int i = 0; i < loops; i++)    {      if (( i % 1000 ) == 0) 	MICODebug::instance()->printer() << i << endl;      s2->func( c );      yield();    }}int main (int argc, char **argv) {  int i;   CORBA::ORB_var orb = CORBA::ORB_init (argc, argv, "mico-local-orb");   CORBA::Object_var o;   if (argc < 2)   {      cerr << "Usage: client <iterations>" << endl;      exit (0);   }   for ( int n = 0; n < 10; n++ ) {     o = orb->bind ("IDL:simple1:1.0");     if (CORBA::is_nil (o))       {         cerr << "client: orb->bind (): to \"IDL:simple1:1.0\" failed";         cerr << "\nclient: is the server running?" << endl;         exit (-1);       }   }   s1 = simple1::_narrow (o);   if (CORBA::is_nil (s1))     {       cerr << "client: couldn't _narrow () to \"IDL:simple1:1.0\"" << endl;       exit (-2);     }   o = orb->bind ("IDL:simple2:1.0");   if (CORBA::is_nil (o))     {       cerr << "client: orb->bind (): to \"IDL:simple12:1.0\" failed";       cerr << "\nclient: is the server running?" << endl;       exit (-1);     }   s2 = simple2::_narrow (o);   if (CORBA::is_nil (s2))     {       cerr << "client: couldn't _narrow () to \"IDL:simple2:1.0\"" << endl;       exit (-2);     }      loops = atoi (argv[1]);      CORBA::Long t1, t2;   t1 = OSMisc::gettime();                                                          th1 = new doit1();   th1->start( &c[0] );   th2 = new doit2();   th2->start( &c[1] );   th1->wait();   delete th1;   th2->wait();   delete th2;   s1->flush();   s2->flush();   cout << "client: done" << endl;   t2 = OSMisc::gettime();   cout << (double)(t2 - t1) << " ms total time" << endl;    cout << (double)(t2 - t1)/ loops << " ms per call" << endl;        return 0;}

⌨️ 快捷键说明

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