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的新手并且没有很多想法。
答案 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()。