我的多线程应用程序 (c++) 使用 pthreads。应用程序会自动生成线程并按需重用它们,并允许线程在空闲时间过长时取消。
我已经放入了一个“特殊线程”来捕获统计数据,以便在遇到不同情况时查看应用程序的性能。
我等不及进程退出,想知道使用了多少 CPU。
尝试从特殊线程中使用它,但结果似乎与 ps & top 的输出不匹配:
struct rusage ru;
double utime, stime, ttime ;
if (getrusage(RUSAGE_SELF, &ru) == -1)
return;
utime = ru.ru_utime.tv_sec + ( ru.ru_utime.tv_usec / 1000000 ); // Total CPU time used in user space
stime = ru.ru_stime.tv_sec + ( ru.ru_stime.tv_usec / 1000000 ); // Total CPU time used in kernel space
ttime = utime + stime; // Total CPU Utilization
各位高手,能否告诉我是否有更好的方法,或者上面是正确的方法,而我实际上还缺少其他东西?
提前致谢。