Здравствуйте, DenProg, Вы писали:
DP>Для подсчета времени выполнения обычно используется std::chrono:
DP>не хочется тянуть эту зависимость
https://stackoverflow.com/questions/20167685/how-to-measure-cpu-time
pthread_getcpuclockid
GetProcessTimes
Для подсчета времени выполнения обычно используется std::chrono:
auto start_time = duration_cast<milliseconds>(system_clock::now().time_since_epoch()).count();
...
uint64_t now = duration_cast<milliseconds>(system_clock::now().time_since_epoch()).count();
if (now - start_time > max_time)
throw TimeExceedException();
Однако таким образом считается общее время всех процессов, и если этот поток вытеснялся на существенное количество времени, то и результат будет несоответсвующий ожидаемому. Как подсчитать время только данного потока? Я нашел только с помощью boost::chrono, но очень не хочется тянуть эту зависимость только из-за этого:
auto start_time = boost::chrono::thread_clock::now();
...
auto now = boost::chrono::thread_clock::now();
boost::chrono::duration<uint64_t, boost::milli> d(max_time);
if (now - start_time > d)
throw TimeExceedException();
Как такое можно сделать на std?