目前,我正在使用getrusage来告诉我在应用程序的事件循环中花费了多少时间。
我不知道冬眠会对此产生什么影响。冬眠时间报告了吗?或者作为系统时间?这是在Posix中指定的,还是系统依赖的?
编辑为here问了同样的问题。
发布于 2015-07-06 14:19:43
我认为POSIX在任何地方都没有提到休眠,所以它在技术上是依赖于平台的。
我只能代表Linux说话,但其他UNIX变体--甚至Windows --可能也有类似的行为,因为这才是最有意义的。
在Linux中,在内核源代码下的文档/power/swstan.txt中描述了在休眠状态下发生的确切细节。简而言之,用户进程被发送一个假信号,使他们切换到TASK_UNINTERRUPTIBLE状态。处于TASK_UNINTERRUPTIBLE状态的进程将从运行队列中取出并处于休眠状态,直到等待条件变为现实为止,因此在TASK_UNINTERRUPTIBLE中花费的时间既不计为用户时间,也不计为系统时间。如果您要用time(1)度量运行时,您最多只能看到它对挂钟时间的贡献。
使用getrusage(2),您将不会看到任何报告的CPU时间的差异,因为进程是不可运行的。
所以,要回答你的问题:冬眠时间根本没有报告。
https://stackoverflow.com/questions/31246788
复制相似问题