Re: Подсчет времени выполнения потока
От: kov_serg Россия  
Дата: 05.08.24 08:53
Оценка: 5 (2)
Здравствуйте, DenProg, Вы писали:

DP>Для подсчета времени выполнения обычно используется std::chrono:

DP>не хочется тянуть эту зависимость

https://stackoverflow.com/questions/20167685/how-to-measure-cpu-time

pthread_getcpuclockid
GetProcessTimes
Подсчет времени выполнения потока
От: DenProg  
Дата: 05.08.24 05:18
Оценка:
Для подсчета времени выполнения обычно используется 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?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.