我的问题是:
我有成千上万的传感器要检测。每个传感器都有一个轮询间隔(不是固定的,而是随时间变化的)。
所以我需要对他们进行一个又一个的有效的调查。
为此,我可以使用一个优先级队列(以轮询时间戳作为密钥)。
问题是传感器可以被忽略:
例如,如果有一个传感器需要每15分钟进行一次轮询,并且有大量传感器需要每5分钟进行一次轮询,那么优先级队列可能会比第一个优先队列更适合它们。
因此,我可以使用很少的优先级队列,而不是一个,但如何选择下一个传感器投票的问题仍然存在。
什么是解决我的问题的理想方法?
谢谢。
发布于 2016-09-28 17:43:20
以下是解决您的问题的方法:
1)如果您需要处理大量不同的优先级,那么使用单个优先级队列是可取的。基本上,在等待一段时间之后,您需要将低优先级作业的优先级提高到较高优先级的作业。这样你就可以无限期地处理低优先级的工作,但是如果有很多低优先级的工作,你可能会暂时饿死高优先级的工作。
2)当可用的优先级作业种类有限时,最好使用多个队列。现在,这些队列中的每一个都有特定的优先级作业。因此,对于每个从低优先级队列中提取的任务,您可以从高优先级队列中轮询多个作业。这有助于降低低优先工作的饥饿率。
https://stackoverflow.com/questions/39754025
复制相似问题