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

How to keep a C++ code running when the PC is in sleep mode?

我有一个计时器的基本 C++ 代码,当代码为 运行 并且 PC 没有休眠时,它可以完美地工作。我希望它即使在电脑进入睡眠模式后也能保持 运行。有可能吗?我是运行Linux.

不,那是不可能的。一切都暂停,机器状态保存到 RAM(以便接收电源)。硬盘等全部断电。然而,机器确实响应某些 "resume" 中断 - 可能有 keyboard/mouse 等中断被处理以恢复它,但 AFAIK 就是这样,我认为你不能利用 software/hardware 互动以保持 CPU 运行 您的指示。

如果你的意思是挂起到 ram挂起到磁盘 休眠模式(ACPI 电源状态 S1 到 S4)那是不可能的。 cpu 不仅在这些模式下空闲而且不处理任何事情。您需要唤醒计算机(ACPI S0 状态)。

Wikipedia article 引用了 ACPI 规范(ACPI 规范修订版 5.0 - 2011 年 12 月 6 日):

"Power on Suspend (POS): Processor caches are flushed, and the CPU(s) stops executing instructions. The power to the CPU(s) and RAM is maintained. Devices that do not indicate they must remain on may be powered off" (emphasis by me)

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

您无需对此电源状态管理执行任何操作。您的 OS' 调度程序和 ondemand governor 将处理此问题。您可能想阅读如何以一种在不需要时不唤醒 CPU 的方式编写脚本。