gpt4 book ai didi

c++ - 如何在 mainloop 正在监听消息的特定时间退出程序?

转载 作者:太空宇宙 更新时间:2023-11-04 11:43:10 37 4
gpt4 key购买 nike

在主程序主循环中,我正在通过调用 tibemsMsgConsumer_Receive 来收听 EMS 主题。同时,我想在特定时间退出程序,比如下午 5 点。我该如何实现?

我尝试使用以下代码,但在没有收到消息的情况下无法正常工作。

当“while”循环卡在那里时,有什么办法可以退出程序吗?

while (1)
{
status = tibemsMsgConsumer_Receive(m_CmbsSpreadMatrixSubscriber, &msg);

if (status == TIBEMS_OK)
{
DoSomething();
}

if (getRunTime("hour").c_str()) >= 18)
{
exit(0);
}
}

最佳答案

使用tibemsMsgConsumer_ReceiveTimeout()并设置适当的超时以反复检查您的退出条件。

根据该页面的描述:

此函数使用来自消费者目的地的下一条消息。当目的地没有准备好任何消息时,此函数将阻止:

  • 如果消息到达目的地,此调用会立即使用该消息并返回。
  • 如果(非零)超时在消息到达之前过去,则此调用返回 TIBEMS_TIMEOUT。
  • 如果另一个线程关闭消费者,则此调用返回 TIBEMS_INTR。

关于c++ - 如何在 mainloop 正在监听消息的特定时间退出程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20642102/

37 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com