Как работает time () в time.h? - PullRequest
0 голосов
/ 08 февраля 2012

Давайте я вызову функцию времени из моего кода и сохраню значение.Затем я отключаю прерывания, и выполняется некоторый код, выполнение которого занимает не тривиальное время.Затем я снимаю прерывания и получаю значение из функции времени.

start = time ( NULL );
disable_interrupts();
...


...
enable_interrupts()
end = time ( NULL );

Я получаю одно и то же значение для начала и конца?Как отключение прерываний может вызвать это странное поведение?

1 Ответ

3 голосов
/ 08 февраля 2012

В зависимости от вашей платформы / операционной системы (и это похоже на встроенный тип), некоторые реализации времени используют прерывания по таймеру или даже считают прерывания vblank / hblank.Отключение прерываний и получение этих результатов, кажется, подтверждает это.Кстати, я согласен с другими в том, что отключение прерываний на любое нетривиальное время занимает много проблем.Если вы точно не знаете, что происходит, и я имею в виду именно это, вы можете легко выстрелить себе в ногу и даже не знать об этом до нескольких месяцев спустя.

...