【问题标题】:Exit a c++ loop after defined amount of time在定义的时间后退出 C++ 循环
【发布时间】:2017-08-29 14:19:53
【问题描述】:

我想执行一个循环并在假设 2 分钟后退出这个循环。

while(condition) {
  // do stuff
  // exit this loop after 2 minutes
}

有人可以推荐我最好的方法吗?

根据答案,这是我所做的:

time_t futur = time(NULL) + 120;
while(condition) {
  // do stuff
  if(time(NULL) > futur) {
    break;
  }
}

【问题讨论】:

标签: c++ time


【解决方案1】:

最佳方式取决于您更看重解决方案的哪些方面。通常最好的方法是最简单的方法。最简单的解决方案是以下算法:

  • 存储当前时间
  • 循环
    • 如果当前时间大于存储时间 + 2 分钟
      • 跳出循环
    • 做事

【讨论】:

    【解决方案2】:

    使用 time.h 中的 clock() 并计算经过的时间,例如:

    timeStart = clock();
    while (condition)
    {
        if ((clock() - timeStart) / CLOCKS_PER_SEC >= 120) // time in seconds
            break;
    }
    

    【讨论】:

    • clock() 测量 CPU 时间,这听起来不像“2 分钟后”所寻找的; std::time() 测量挂钟时间。而clock()返回的值不一定是毫秒;您必须将其乘以 CLOCKS_PER_SEC 才能将其转换为秒。
    • 你做对了,除以CLOCKS_PER_SEC,尽管我声称你必须乘以。
    猜你喜欢
    • 1970-01-01
    • 2016-07-11
    • 1970-01-01
    • 2013-11-12
    • 1970-01-01
    • 1970-01-01
    • 2023-02-22
    • 2023-03-24
    相关资源
    最近更新 更多