clock () возвращает отрицательное значение? - PullRequest
0 голосов
/ 23 декабря 2011

Я создал серверную программу, и дважды произошла ошибка, когда функция 'clock ()' возвратила отрицательное значение (и потерпела крах сервера).Оба раза это происходило, когда программа работала более 100 часов на 32-битном VPS в Windows.

Вот мои настройки в 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 () широко используется в остальной части программы, поэтому, когда он глючит, это вызывает много проблем.

Мне интересно, почему он возвращает отрицательное значение, и как я могу исправитьэто?

Спасибо.

1 Ответ

4 голосов
/ 23 декабря 2011

Согласно документации Microsoft он может вернуть -1, если "количество прошедшего времени недоступно". К сожалению, они не объясняют, как время будет недоступно.

Определение clock_t - это long, которое представляет собой 32-разрядное значение со знаком - оно может содержать 2 ** 31, прежде чем переполнится. Значение CLOCKS_PER_SECOND равно 1000, поэтому оно должно быть хорошо в течение 596 часов.

...