gpt4 book ai didi

c - getrusage() 如何报告休眠时间?

转载 作者:太空宇宙 更新时间:2023-11-04 02:41:40 29 4
gpt4 key购买 nike

我目前正在使用 getrusage 来告诉我我在应用程序的事件循环中花费了多少时间。

我想知道这将如何受到 hibernate 的影响。是否报告了休眠时间?或者作为系统时间?这是在 Posix 的某个地方指定的还是这个系统相关的?

编辑 为 Windows 询问相同的问题 here .

最佳答案

我不认为 POSIX 在任何地方提到休眠,所以它在技术上依赖于平台。

我只能说 Linux,但其他 UNIX 变体 - 甚至可能是 Windows - 可能表现相似,因为这是最有意义的。

在 Linux 中,在内核源代码下的 Documentation/power/swsusp.txt 中描述了休眠幕后发生的具体细节。简而言之,用户进程会收到一个虚假信号,导致它们切换到 TASK_UNINTERRUPTIBLE 状态。处于 TASK_UNINTERRUPTIBLE 状态的进程从运行队列中取出并进入休眠状态,直到它等待的条件成立,因此在 TASK_UNINTERRUPTIBLE 中花费的时间既不计入用户时间也不是系统时间。如果您要使用 time(1) 测量运行时间,您最多会看到它对挂钟时间有贡献。

使用 getrusage(2),您不会在报告的任何 CPU 时间上看到任何差异,因为该进程不可运行。

因此,回答您的问题:根本没有报告休眠时间。

关于c - getrusage() 如何报告休眠时间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31246788/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com