【问题标题】:clock() Returns Negative Value?时钟()返回负值?
【发布时间】:2012-01-26 13:55:59
【问题描述】:

我创建了一个服务器程序,在函数“clock()”返回负值(并导致服务器崩溃)的情况下发生了两次特定错误。两次都发生在程序运行超过 100 小时时,在 Windows 32 位 VPS 上。

这是我在 main.cpp 中的设置(适当剪切):

while (1) {
    Sleep(STEP);

            //execute main code like connection handling, AI, etc.

    //check for clock error
    if (clock() < 0) {
        //error saved here

                //close server
        return 0;
    }
}

就是这样,很简单。 clock() 在程序的其余部分被广泛使用,所以当它像这样出现故障时会导致很多问题。

我想知道,为什么它返回一个负值,我该如何解决它?

谢谢。

【问题讨论】:

    标签: c++ function clock


    【解决方案1】:

    根据Microsoft's documentation,如果“经过的时间量不可用”,它可以返回-1。不幸的是,他们没有解释为什么时间不可用。

    clock_t 的定义是long,它是一个 32 位有符号值 - 在溢出之前它可以保持 2**31。 CLOCKS_PER_SECOND 的值是 1000,所以应该可以使用 596 小时。

    【讨论】:

    • 该程序可能已经运行了 596 小时……说实话,我一下子忘记了它运行了多长时间。如果是这样,那可能就是问题所在。如果clock() 返回-1,我能否以某种方式将clock_t 重置为0?
    • 根据C99,“如果使用的处理器时间不可用或其值无法表示,则函数返回值(clock_t)(-1)。”
    • @Matthew,还有很多其他可用的时钟功能没有这个问题 - 使用其中之一。
    猜你喜欢
    • 2013-10-22
    • 2020-11-26
    • 2011-06-12
    • 2018-05-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-30
    相关资源
    最近更新 更多