RUSAGE_THREAD不起作用,寻找解决方案/替代方案

时间:2016-03-16 11:48:35

标签: c++ linux ace

我正在尝试使用rusage来计算某个线程的Avg cpu时间。

但是,我在这个范围内没有宣布'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,但在尝试使用ACE_OS :: rusage时,我找不到RUSAGE_THREAD的等价物。

谢谢

编辑:另外一件事,我无法访问线程制作代码的实际位置,我只能使用线程内的代码。

1 个答案:

答案 0 :(得分:1)

manual page表示您需要定义宏_GNU_SOURCE而不是__USE_GNU