RUSAGE_THREAD Не работает, ищу решение/альтернативу

Я пытаюсь рассчитать среднее время процессора определенного потока, используя rusage.

однако я получаю, что «RUSAGE_THREAD» не был объявлен в этой области.

Я использую

#include <sys/resource.h>

и компиляция с -D_GNU_SOURCE

в начале моего кода, и моя версия Linux в порядке.

здесь я пытаюсь сделать расчет:

struct rusage l_rusage;
int retVal = getrusage(RUSAGE_THREAD, &l_rusage);

u64 userUSeconds = (static_cast<u64>(l_rusage.ru_utime.tv_sec)) * 1000000 +
  (static_cast<u64>(l_rusage.ru_utime.tv_usec));

u64 systemUSeconds = (static_cast<u64>(l_rusage.ru_stime.tv_sec)) * 1000000 +
  (static_cast<u64>(l_rusage.ru_stime.tv_usec));

return (userUSeconds + systemUSeconds) / ACE_OS::num_processors_online();

Любые идеи? или, может быть, даже другое решение? я также использую библиотеки ACE, поэтому у меня есть ACE_OS, но я не смог найти эквивалент для RUSAGE_THREAD при попытке использовать ACE_OS::rusage.

Спасибо

РЕДАКТИРОВАТЬ: Еще одна вещь: я не могу получить доступ к тому, где на самом деле находится код создания потока, я могу использовать код только из потока.


person Dinari    schedule 16.03.2016    source источник
comment
Попробуйте создать минимальный, полный и проверяемый пример и покажите нам, код всегда помогает.   -  person Some programmer dude    schedule 16.03.2016


Ответы (1)


На странице руководства сказано, что вам нужно определить макрос _GNU_SOURCE, а не __USE_GNU .

person Some programmer dude    schedule 16.03.2016
comment
Плохо, но это все еще не сработает, та же ошибка, переместил определение в make-файл, чтобы убедиться, что оно определено перед всем остальным. - person Dinari; 16.03.2016
comment
@Dinari ты нашел решение этой проблемы? - person asad_nitp; 25.05.2021
comment
Это было давно, поэтому я не уверен, однако у меня был этот дополнительный вопрос - stackoverflow.com/questions/36181225/, которые включают примеры кода, чтобы сделать то, что я намеревался. - person Dinari; 25.05.2021