【问题标题】:RUSAGE_THREAD Does not work, looking for solution/alternativeRUSAGE_THREAD 不起作用,正在寻找解决方案/替代方案
【发布时间】:2016-03-16 11:48:35
【问题描述】:

我正在尝试使用 rusage 计算某个线程的平均 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 的等价物。

谢谢

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

【问题讨论】:

标签: c++ linux ace


【解决方案1】:

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

【讨论】:

  • 我的错,但这仍然行不通,同样的错误,将定义移动到 makefile 以确保它在其他所有东西之前定义。
  • @Dinari 你找到解决这个问题的方法了吗?
  • 很久以前,所以我不确定,但是我有这个后续问题 - stackoverflow.com/questions/36181225/… 其中包括代码示例来做我想做的事情。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-06-04
  • 2012-10-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多