我的多线程应用程序(c ++)使用pthreads。应用程序自动生成线程并按需重新使用它们,并允许线程在空闲时间过长时被取消。
我已经设置了一个“特殊线程”来捕获统计数据,以便在遇到不同场景时查看应用程序的性能。
我不能等待进程退出,知道使用了多少CPU。
尝试使用特殊线程中的这个,但结果似乎与ps&的输出不匹配。顶部:
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
你可以好好修理,告诉我是否有更好的方法,或者上面的方法是正确的,我实际上错过了其他的东西?
提前致谢。
答案 0 :(得分:0)
如果这是在Linux上,您可以使用特殊的/ proc文件系统来查找有关您的进程的各种有趣信息。我不是专家,但我非常确定cpu使用情况统计数据存在于某处。
答案 1 :(得分:0)
好的,我明白了!
我上面发布的代码非常正确。 我的困惑只是由不正确的观察引起的。