优雅的方式来执行许多闹钟

Elegant way to excecute many alarm clocks?

本文关键字:执行 许多 闹钟 方式      更新时间:2023-10-16

假设我有一个多个事件的确切未来时间的向量。 我希望这些活动在达到各自的时间后启动。如何在不经常使用 if 语句来检查当前时间是否为这些设置时间之一的情况下执行此操作? 这种不断的检查,特别是如果程序中正在运行许多其他内容(其中一些时间可能离现在有点远)会降低程序的性能。我正在使用 c++11,最新版本的 GCC。

如果您使用的是 C++11,则创建线程可能是最简单的方法,让它休眠直到下一个闹钟时间。存储警报时间的最有效方法可能是优先级队列。

如果您没有可用的 C++ 11,您可以考虑使用提升线程。该标准的线程紧密基于 Boost 线程,因此使用它们将非常相似。

如果你不想使用它,你几乎需要使用操作系统工具来完成这项工作。对于几乎任何相当现代的操作系统,你可以创建一个线程并让它休眠到下一个闹钟时间,但你可能还会有一些东西更直接地支持你想要的东西(在指定时间调用函数)。不过,其细节将特定于操作系统。