为什么CORBA run()取决于挂钟?

时间:2015-04-12 18:31:39

标签: c++ linux corba

CORBAorb->run()取决于挂钟。我该如何改变这种行为?

 CORBA::ORB_var orb = CORBA::ORB_init (argc, argv);
  const unsigned int orb_duration = 10000000; // 10 seconds    
    while(true)
    {
        ACE_Time_Value tv(0, orb_duration );
        tv.set(0, orb_duration );
        orb->run(tv);
      //orb->perform_work (tv);   
     //some task and back to orb;
    }

这里orb->run(tv)取决于系统时间,如果我改变我的Linux系统时钟,那么orb运行持续时间就会变化! (它看起来在里面它取决于挂钟时间。)

我尝试使用perform_work(),看起来似乎无法解决问题。请建议我克服这个挂钟的挂钟参考的好方法。我是Corba的新手并且没有很多想法。

2 个答案:

答案 0 :(得分:0)

默认情况下,TAO会使用系统时间进行ORB运行。要启用单调时间支持,您必须将以下行添加到ace / config.h文件的顶部并重新编译ACE / TAO和您的应用程序。

#define TAO_USE_HR_TIME_POLICY_STRATEGY
#define ACE_HAS_CLOCK_GETTIME_MONOTONIC

答案 1 :(得分:0)

您不需要使用orb run duration。 您可以启动一个新的线程,在其中调用orb-> run(),当您想要停止它时,只需从主线程调用orb-> shutdown()。