Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/128.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在C++/促进 我不知道哪一个Boost C++库用来在一天的某个时间安排一组警报。我相信这是非常普通和简单的事情。欢迎任何指点。我曾想过为每个警报创建一个线程并将其休眠,但应该有更优雅的功能。_C++_Boost - Fatal编程技术网

如何在C++/促进 我不知道哪一个Boost C++库用来在一天的某个时间安排一组警报。我相信这是非常普通和简单的事情。欢迎任何指点。我曾想过为每个警报创建一个线程并将其休眠,但应该有更优雅的功能。

如何在C++/促进 我不知道哪一个Boost C++库用来在一天的某个时间安排一组警报。我相信这是非常普通和简单的事情。欢迎任何指点。我曾想过为每个警报创建一个线程并将其休眠,但应该有更优雅的功能。,c++,boost,C++,Boost,您可以使用boost定时器,并始终将定时器设置为在必须触发警报的最近日期运行。 这里也可以找到一个例子 在stackOverflow示例中,间隔将是所有NextAlarmRun-currentTime之间的最小值 总之 1) 保存所有下一次报警时间 2) 创建计时器并设置为最近的报警时间(A1) 3) 计时器被触发了,做什么 4) 将A1更改为新值 5) 计算最近的报警时间 6) 将计时器重置为最近的报警时间 编辑:为了避免每次都计算最近的报警时间,您可以使用orderd列表或向量,一旦报警运

您可以使用boost定时器,并始终将定时器设置为在必须触发警报的最近日期运行。

这里也可以找到一个例子 在stackOverflow示例中,间隔将是所有NextAlarmRun-currentTime之间的最小值

总之

1) 保存所有下一次报警时间

2) 创建计时器并设置为最近的报警时间(A1)

3) 计时器被触发了,做什么

4) 将A1更改为新值

5) 计算最近的报警时间

6) 将计时器重置为最近的报警时间


编辑:为了避免每次都计算最近的报警时间,您可以使用orderd列表或向量,一旦报警运行,将其删除并将新的报警时间插入结构中的适当位置。我不建议使用队列,因为当前警报可能必须排在队列中最后一个警报之前。

您可以使用boost定时器,并始终将计时器设置为在必须触发警报的最近日期运行。

这里也可以找到一个例子 在stackOverflow示例中,间隔将是所有NextAlarmRun-currentTime之间的最小值

总之

1) 保存所有下一次报警时间

2) 创建计时器并设置为最近的报警时间(A1)

3) 计时器被触发了,做什么

4) 将A1更改为新值

5) 计算最近的报警时间

6) 将计时器重置为最近的报警时间


编辑:为了避免每次都计算最近的报警时间,您可以使用orderd列表或向量,一旦报警运行,将其删除并将新的报警时间插入结构中的适当位置。我不建议使用队列,因为当前警报可能必须排在队列中最后一个警报之前。

我可能会创建一个警报时间的优先级队列(注意:您必须使用
作为比较运算符,以便最早的时间被视为最高优先级),然后进行单线程睡眠,直到第一次。当它醒来时,让它执行所需的操作,然后休眠到优先级队列中下一个项目的报警时间。

我可能会创建一个报警时间优先级队列(注意:您必须使用
作为比较运算符,以便将最早的时间视为最高优先级),然后进行单线程睡眠,直到第一次。当它醒来时,让它执行所需的操作,然后休眠到优先级队列中下一项的报警时间