如何在PC处于睡眠模式时保持C++代码运行?



我有一个基本的计时器C++代码,当代码运行时,PC不休眠时,它可以完美运行。我希望即使在电脑进入睡眠模式后它也能继续运行。有可能吗?我正在运行Linux。

如果您的意思是挂起到内存挂起到具有睡眠模式的磁盘(ACPI 电源状态 S1 到 S4(,则这是不可能的。CPU 在这些模式下不仅处于空闲状态,而且不处理任何内容。您需要唤醒计算机(ACPI S0 状态(。

维基百科文章引用了 ACPI 规范(ACPI 规范修订版 5.0 - 日期为 2011 年 12 月 6 日(:

"挂起电源 (POS(:处理器缓存被刷新,CPU停止执行指令。保持 CPU 和 RAM 的电源。未指示必须保持打开状态的设备可能会关闭电源"(我强调(

但是,如果您打算在计算机空闲时运行脚本,则情况会有所不同。在此上下文中,空闲意味着电脑处于 ACPI 状态 S0,但目前没有 CPU 的任务。CPU,或者更确切地说是其内核,将设置为 C0 和 C6 之间的电源管理 C 状态。控制这些州的州长将根据需要非常快速地在 C 州和 P 州之间切换。当 CPU 空闲时间较长时,它将被发送到下一个更深的 C 状态。

无需对此电源状态管理执行任何操作。您的操作系统的调度程序和按需调控器将处理此问题。您可能希望了解如何以在不需要时不会唤醒 CPU 的方式编写脚本。

不,这是不可能的。一切都被挂起,机器状态保存到RAM(以便接收电源(。硬盘等均已关闭电源。然而,机器确实会响应某些"恢复"中断 - 可能会处理键盘/鼠标等中断来恢复它,但 AFAIK 就是这样,我认为你不能利用这些软件/硬件交互来保持 CPU 运行你的指令。