我有两台计算机可以通过串行连接相互通信.连接通过无线网络进行.两个系统之间的通信存在可变的,变化的延迟.在两个系统上,我都有一个计数器运行时间,每ms增加1.它们都会在应用程序启动后立即启动.假设每台计算机在不同时间启动.如何使用串行连接同步计数器,以便systemA.counter等于systemB.counter,以便两个计数器同时递增(或尽可能接近).
理想情况下,一旦同步,计数器将仅缓慢地分开,以便每3或4千个incs我可以重新同步.
我正在寻找关于这个主题的好资源,例如algorythms,示例代码(c / c),任何指向正确方向的东西.
更新
这是一个封闭的系统,没有互联网.除了所有意图和目的之外,没有真正的协议,并且通过无线链路打开串行线路.目前的链接是蓝牙,但我正在考虑将其移动到ZigBee Mesh.目前有2个节点,但是如果我有30个节点都运行同一个应用程序,我希望它们全部同步.没有客户端/服务器指定,只有几个设备与计数器运行相同的程序.我无法访问任何类似时间的东西,只有这个计数器会增加一毫秒,无论我采用什么算法.
一旦我能够实现这一点,我想建立一个预定和映射系统,但为了计算节点之间的距离,我需要在设备上同步驱动时序.
最佳答案 如果您使用此计数器来订购系统中的事件,则应查看
vector clocks或
Lamport timestamps.