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

RUSAGE_THREAD Does not work, looking for solution/alternative

本文关键字:解决方案 方案 寻找 THREAD 不起作用 RUSAGE      更新时间:2023-10-16

我正在尝试使用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的等效物。

谢谢

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

手册页说你需要定义宏_GNU_SOURCE而不是__USE_GNU

相关文章: