为啥 CORBA run() 依赖于挂钟?
Posted
技术标签:
【中文标题】为啥 CORBA run() 依赖于挂钟?【英文标题】:Why CORBA run() depends on wall clock?为什么 CORBA run() 依赖于挂钟? 【发布时间】:2015-04-12 18:31:39 【问题描述】: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()
,但它似乎无法正常工作。请建议我一个克服这个orb挂钟参考的好方法。我是 Corba 的新手,没有太多想法。
【问题讨论】:
是什么让您认为它有所不同?它的差异有多大? 【参考方案1】:默认情况下,TAO 确实使用系统时间来运行 ORB。要启用单调时间支持,您必须将以下行添加到 ace/config.h 文件的顶部并重新编译 ACE/TAO 和您的应用程序。
#define TAO_USE_HR_TIME_POLICY_STRATEGY
#define ACE_HAS_CLOCK_GETTIME_MONOTONIC
【讨论】:
【参考方案2】:您不需要使用 orb 运行持续时间。 您可以启动一个调用 orb->run() 的新线程,当您想停止它时,只需从主线程调用 orb->shutdown()。
【讨论】:
以上是关于为啥 CORBA run() 依赖于挂钟?的主要内容,如果未能解决你的问题,请参考以下文章
为啥 VS Code javascript intellisense 依赖于我打开的文件?