簡體   English   中英

跨網絡同步計數器

[英]Synchronizing a counter across a network

我有兩台可以通過串行連接相互通信的計算機。 連接是通過無線網絡進行的。 這兩個系統之間的通信存在可變,變化的延遲。 在兩個系統上,我都有一個計數器運行時間,該運行時間每毫秒增加1。 它們都在應用程序啟動后立即啟動。 假設每台計算機在不同的時間啟動。 如何通過串行連接同步計數器,以使systemA.counter等於systemB.counter,並使兩個計數器同時(或盡可能接近)遞增。

理想情況下,一旦同步,計數器將僅緩慢地漂移,以使每3或4000個incs可以重新同步一次。

我正在尋找有關該主題的良好資源,例如算法算法,示例代碼(c / c ++),以及任何可以使我朝正確方向發展的方法。

更新資料

這是一個封閉的系統,沒有互聯網。 出於所有目的和目的,除了通過無線鏈路打開串行線外,根本沒有真正的協議。 目前該鏈接是藍牙,但我正在考慮將其移至ZigBee Mesh。 當前有2個節點,但是如果我有30個節點都在運行同一應用程序,則希望它們全部同步。 沒有客戶端/服務器名稱,只有幾個運行帶有計數器的相同程序的設備。 我無法訪問任何類似時間的信息,只是該計數器每毫秒增加一次,無論我采用哪種算法都可以。

一旦可以完成這項工作,我想建立一個定位和映射系統,但是要弄清楚節點之間的距離,我需要在設備上同步啟動時序。

顯而易見的資源是NTP,例如在http://www.eecis.udel.edu/~mills/ntp.html上有記錄,並帶有鏈接。 基本上,這使用時間戳來調整本地時鍾運行的頻率。 該協議已經存在多年了,並且是不斷研究的主題-我看不到那里的任何幻燈片都可以立即闡明其工作原理。 您可能會想看看是否已經有NTP實現,而不是自己嘗試重新實現。

看起來(例如,通過搜索),在時間同步算法方面工作的人很少,特別是在無線傳感器網絡的情況下。 除搜索外,一個跳出的起點是http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.85.2012上的調查論文-傳感器網絡中的時間同步:一項調查(2004年)

如果使用此計數器對系統中的事件進行排序,則應查看矢量時鍾Lamport時間戳

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM