В настоящее время я пытаюсь переписать некоторое программное обеспечение на С++ из старого кода Python. В версии Python у меня были такие таймеры:
from time import time, sleep
t_start = time()
while (time()-t_start < 5) # 5 second timer
# do some stuff
sleep(0.001) #Don't slam the CPU
sleep(1)
print time()-t_start # would print something like 6.123145 notice the precision!
Однако в C++, когда я пытаюсь использовать time(0)
из < time.h >
, я могу получить точность в секундах только как целое число, а не с плавающей запятой.
#include <time.h>
#include <iostream>
time_t t_start = time(0)
while (time(0) - t_start < 5) // again a 5 second timer.
{
// Do some stuff
sleep(0.001) // long boost sleep method.
}
sleep(1);
std::cout << time(0)-t_start; // Prints 6 instead of 6.123145
Я также пробовал gettimeofday(struct, NULL)
из < sys/time.h >
, однако всякий раз, когда я сплю программу с boost::this_thread::sleep
, это время не считается...
Я надеюсь, что кто-то здесь сталкивался с подобной проблемой и нашел решение.
Кроме того, мне действительно нужен dt с точностью не менее миллисекунды, потому что в
// Do some stuff
часть кода, я могу выйти из цикла while раньше, и мне нужно знать, как долго я был внутри и т. д.
Спасибо за чтение!