作者热门文章
- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我有一个机器列表,我根据它们的响应时间对它们进行 ping。最初所有机器每 t
毫秒被 ping 5 次。根据每台机器上这 5 个 ping 的响应时间,我调整 ping 的时间以延长或缩短它,直到达到这样的配置:
machine1: t1....t2....t3....t4....t5
machine2: t1......t2......t3......t4......t5
..
machineN: ..t1..t2..t3..t4..t5
^
|machine needs to be pinged at this tick
t1..tN
表示时钟的(毫秒)滴答声。
很明显,每台机器都有一个线程来执行 ping,但由于机器的数量,这不是最佳解决方案。
相反,一个线程遍历事件的全局顺序是可取的,如下所示:
while(true){
fetch_next_machine_to_be_pinged();
ping_it();
if(any_machine_pinged_5_times());
reorder_events(); //adjust the time of its next 5 ping
//continue
}
实现此目标的最佳方法是什么? (ps:C语言)。
最佳答案
我会使用 priority queue .
在任何时候,队列都将包含每台机器的一个条目。条目 M
的“优先级”将是机器 M
接下来需要 ping 的时间戳,有效负载将是一些标识机器的 token (以便您知道谁ping)。
关于c - 遍历不断变化的事件列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6774795/
我是一名优秀的程序员,十分优秀!