0

我看到 SetThreadExecutionState 会阻止计算机进入睡眠状态。

使用 boost::thread,我将如何将其应用到我的软件中?使用 disable_interruption?

4

1 回答 1

1

那是操作系统特定的功能,与线程完全无关。

它与电源管理有关。

但是,您可以运行 /a/ 循环执行此操作的后台线程:

void background_thread() {

     while (true) {
           boost::this_thread::sleep_for(boost::chrono::seconds(30));
           ::SetThreadExecutionState(...); // whatever you want to do
     }
}

具有讽刺意味的是,您可能希望使用中断点来优雅地终止该线程(尽管您可以使用您喜欢的任何同步机制)

于 2015-01-05T12:41:35.340 回答